@b1
wartość true (jest to tablica o niezerowej liczby elementów), więc logiczna Test w grep skonstruuj (not @b1
) zawsze zwróci false. grep filtruje tablicę zwracającą tylko te elementy, dla których test boolowski zwraca wartość true.
Należy sprawdzić, czy $_
(aktualnie rozpatrywany element tablicy) jest w stanie @bl
, czy też nie. Jednym ze sposobów, aby to zrobić, aby wygenerować tymczasowej hash używając @bl
jako klucze, a następnie w grep czeku oświadczenie na obecność $_
w klawisze skrótu:
#!/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];
„odjąć” nie jest właściwym słowo tutaj. Kiedy ** wyszukasz właściwe słowo, odkryjesz, że to on wywołuje atak hashowski. – tchrist