当我尝试以下
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @bl = qw(red green blue);
my @a = qw(green yellow purple blue pink);
print Dumper [grep {not @bl} @a];
Run Code Online (Sandbox Code Playgroud)
我得到一个空数组.我原以为会@bl减去@a,所以输出是yellow purple pink.
这有什么不对?
Eri*_*rom 34
您需要@bl变成哈希来执行设置差异:
my %in_bl = map {$_ => 1} @bl;
my @diff = grep {not $in_bl{$_}} @a;
Run Code Online (Sandbox Code Playgroud)