print !grep { 3 == $_ } 2, 3, 8;
そして、私は何も得ません。
これが使われているのを見たことがあります。
if (!grep { /^#EXTINF:/ } @lines)
さらに悪いことに、検索では ! が検索されないため、Google や Duckduckgo で !grep を検索するのは困難です。私が見つけたのは、Perldocs のコードのほんの一部だけでした。
grep の戻り値:
3 == $_
)また、!
Perl の否定なので、真の値 (1 など) がある場合は、偽の値に変換されます。
コードの展開:
my $a = grep { 3 == $_ } 2, 3, 8; #<-- $a takes 1 (only one element satisfies the condition)
print ! $a; #<-- prints nothing
微妙な違いがあります
grep !/foo/, @bar
配列 @bar が空の場合、このテストは何も返しません。@bar に要素が含まれている場合、このテストは、スカラー コンテキストで一致しない要素の数、またはリスト コンテキストで一致する要素の配列を返します。
と、
!grep /foo/, @bar
配列 @bar が空であるか、一致しない要素がいくつでも含まれている場合、このテストはスカラー コンテキストで 1 を返します。@bar に一致する要素が含まれている場合、このテストは何も返しません。