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)"