在第4章第4.8节(计算联盟,交集或唯一列表的差异)中,Perl Cookbook提供了这种技术来获取两个整数列表的交集:
@a = (1, 3, 5, 6, 7, 8);
@b = (2, 3, 5, 7, 9);
...
foreach $e (@a, @b) {
$union{$e}++ && $isect{$e}++
}
@union = keys %union;
@isect = keys %isect;
Run Code Online (Sandbox Code Playgroud)
我想要为两个字符串列表完成(不区分大小写).请问有效的方法吗?
小智 17
Array :: Utils就是你要找的.
use Array::Utils qw(:all);
my @a = qw( a b c d );
my @b = qw( c d e f );
my @isect = intersect(@a, @b);
print join(",",@isect) . "\n";
Run Code Online (Sandbox Code Playgroud)
这产生了预期的输出
c,d
Run Code Online (Sandbox Code Playgroud)
编辑: 我没有注意到你想要这样做不区分大小写.在这种情况下,您可以替换@a为map{lc}@a(以及同样@b).