給兩個數組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