You grep expression is in the form:grep EXPR,LIST. But EXPR is fixed as $var1 - not a regexp or code block.
grep will return the whole list or an empty list depending on whether $var evaluates to true or false. Consider:
my @arr1 = ('a');
foreach my $var1 (0, 1) {
if( grep($var1, @arr1) ) {
print "match $var1\n";
}
else {
print "fail $var1\n";
}
}
nothing is returned when $var1 is 0 (false)
the entire list is returned when $var1 is 1 (true)
Update:
Here's a sample usage:
#!/usr/bin/perl
use warnings;use strict;
my $paid = 0; # :-(
my @shopping =
(
'twinkies','coffee',
(grep !$paid => 'gruel', 'cabbage', 'cordial'),
(grep $paid => 'caviar', 'truffles', 'champagne'),
);
print "@shopping";
|