++$Y{$y} if grep { $y eq $_ } @ARGV; #### my $re; if ( @ARGV ) { my $pat = join "|", map quotemeta, @ARGV; $re = qr/^(?:$pat)\z/; } my %Y; while ( <> ) { my ( $y ) = ...; ++$Y{ $y } if $y && ( !$re || $y =~ $re ); } #### my $re; my %valid; ++$valid{ $_ } for @ARGV; my %Y; while ( <> ) { my ( $y ) = ...; ++$Y{ $y } if $y && ( !%valid || $valid{ $_ } ); }