print !grep { 3 == $_ } 2, 3, 8;
我一无所获。
我见过这个。
if (!grep { /^#EXTINF:/ } @lines)
更糟糕的是,很难在Google或Duckduckgo上搜索!grep,因为搜索不会搜索!而我所能找到的只是Perldocs中的一些代码。
答案 0 :(得分:3)
grep返回:
3 == $_
)此外,!
是perl否定,所以如果你有一个真值(如1),它会转换为假值
展开您的代码:
my $a = grep { 3 == $_ } 2, 3, 8; #<-- $a takes 1 (only one element satisfies the condition)
print ! $a; #<-- prints nothing
答案 1 :(得分:1)
之间存在细微差别
grep !/foo/, @bar
如果数组@bar为空,则此测试将不返回任何内容。如果@bar包含元素,则此测试将返回标量上下文中非匹配元素的数量,或列表上下文中匹配元素的数组。
和
!grep /foo/, @bar
如果数组@bar为空或包含任何数量不匹配的元素,则此测试将在标量上下文中返回1。如果@bar包含任何匹配的元素,则此测试将不返回任何内容。