Venerable Monks,
I came across this error recently and was wondering if someone could explain it to me:
use strict;
use warnings;
my %hash = (abc=>1,def=>1);
my @array = qw/abc def ghi/;
my @ary1 = grep{ ! $hash{$_} } @array; # OK
my @ary2 = grep( ! $hash{$_}, @array); # OK
my @ary3 = grep{ not $hash{$_} } @array; # OK
my @ary4 = grep( not $hash{$_}, @array); # NOT OK
Errors from fourth statement:
Useless use of hash element in void context
Not enough arguments for grep near "@array)"
From perldoc:
Unary "not" returns the logical negation of the expression to its right. It's the equivalent of "!" except for the very low precedence.