in reply to grep and $_

In your case, $_ is an alias (think pronoun) for the current list value being iterated in the closest loop.

I think the main problem you are having is the implicit loop that grep creates. grep actually creates another loop which sets $_.

Also your outside loop over @required never sets $_ since you explicitly create a variable.

ex.

my @required = qw(preserver sunscreen water_bottle jacket); foreach my $item (@required) { print "$_\n"; ## You just get a warning }

Replies are listed 'Best First'.
Re^2: grep and $_
by convenientstore (Pilgrim) on Aug 11, 2007 at 23:38 UTC
    no wonder I coudn't print $_
    thanks guys
      you can if you use the BLOCK form of grep..
      unless ( grep { print "$item eq $_? ", $item eq $_, "\n"; $item eq $_; } @skipper ) { # not found in list? print "skipper is missing $item.\n"; }