Rainer Weikusat
2021-04-02 18:37:29 UTC
The perl grep operator can be used to determine if some condition holds
for some elements of a list. In scalar context, it returns the number of
times the condition was true. This means it's semantically a bad fit for
finding a single element in a list because it always processes the
complete list. But it can be used as test expression for a statement
modifier ... so far, so bad.
Upon spending a time thinking through this, it dawned to be that eval {
} is syntactically an expression, hence
------
@a = qw(a b c d e);
while ($l = <STDIN>) {
chomp($l);
print("found $l\n") if eval { $_ eq $l and return 1 for @a };
}
-------
is valid Perl (which works, obviously).
for some elements of a list. In scalar context, it returns the number of
times the condition was true. This means it's semantically a bad fit for
finding a single element in a list because it always processes the
complete list. But it can be used as test expression for a statement
modifier ... so far, so bad.
Upon spending a time thinking through this, it dawned to be that eval {
} is syntactically an expression, hence
------
@a = qw(a b c d e);
while ($l = <STDIN>) {
chomp($l);
print("found $l\n") if eval { $_ eq $l and return 1 for @a };
}
-------
is valid Perl (which works, obviously).