@b1
doğru olarak değerlendirilir senin grep içinde, yani Boole testi (o elementlerin sıfırdan farklı bir sayı ile bir dizi var) Yapı (not @b1
) her zaman false değerini döndürür. grep, yalnızca boole testinin doğru döndüğü öğeleri döndüren bir diziyi filtreler.
$_
öğesinin (şu anda göz önünde bulundurulacak olan dizi öğesi) @bl
içinde olup olmadığını görmek için sınamanız gerekir. Acme::Tools den minus
işlevini kullanarak,
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @bl = qw(red green blue);
my @a = qw(green yellow purple blue pink);
# create a hash
my %h;
# nifty trick - use a hash slice to populate the
# hash. The values are irrelevant so we'll use @bl
# for those too
@h{@bl} = @bl;
print Dumper [grep {!exists $h{$_}} @a];
“çıkarma” doğru değil burada kelime. ** doğru kelimeyi bulduğunuzda, bir Pavlovian hash saldırısını tetikleyen bir tane olduğunu keşfedeceksiniz. – tchrist