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