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 包含任何匹配的元素,则此测试将不返回任何内容。