Return value based on context : Context « Subroutine « Perl






Return value based on context

   

#!/usr/bin/perl
use warnings;
use strict;

sub list_files {
    die "Function called in void context" unless defined wantarray;
    my $path = shift;

    return unless defined $path;
    chomp $path;   
    $path.='/*' unless $path =~/\*/;  
    my @files = glob $path;
    return wantarray?@files:\@files;
}

my $path = $ARGV[0] || print("Enter Path: ") && <>;

# call subroutine in list context
print "Get files as list:\n";
my @files = list_files($path);
foreach (sort @files) {
    print "\t$_\n";
}

# call subroutine in scalar context
print "Get files as scalar:\n";
my $files = list_files($path);
foreach (sort @{$files}) {
    print "\t$_ \n";
}

   
    
    
  








Related examples in the same category

1.Scalar and list Context
2.Wantarray function.
3.Context and Subroutines