给两个数组A1,A2, 取出属于A1不属于A2的元素,即若A1=("1","2","3","4","5"),A2=("4","5","6","7"), 要求输出结果A2=("1","2","3").
解决方法:利用map函数进行处理,测试结果如下
#!/usr/bin/perl -w
my @arr1 = ("1","2","3","4","5");
my @arr2 = ("4","5","6");
print "before changing arr1:\n";
foreach (@arr1)
{
print "$_\n";
}
print "before changing arr2:\n";
foreach (@arr2)
{
print "$_\n";
}
# 将数组2存入散列
my %harr2 = map {$_ => undef} @arr2;
#取属于A1不属于A2的元素
@arr1 = grep {not exists $harr2{$_}} @arr1;
print "after changing arr1:\n";
foreach (@arr1)
{
print "$_\n";
}
print "after changing arr2:\n";
foreach (@arr2)
{
print "$_\n";
}
运行结果:
[web@localhost new]$ perl testArray1.pl
before changing arr1:
1
2
3
4
5
before changing arr2:
4
5
6
after changing arr1:
1
2
3
after changing arr2:
4
5
6