1.數組相等,數組成員相同,位置也相同web
通常的若是判斷@array1 等於 @array2數組
a.數組長度相同 $#array1=$#array2, 比較數組長度,不能使用length函數,length只適用string類型函數
數組參數傳遞,不能直接傳遞ui
sub compare() { my $flag=0; my ($first,$second)=@_; if (@$first==@$second) # the number of the array , don't use length() { for(my $i=0;$i<@$first;$i++) { if($first->[$i]!=$second->[$i]) { $flag=1; print "$first->[$i]==$second->[$i]\n"; } } } else { $flag=1; } if( $flag==1) { print "two arrays are not equal\n"; } else { print "two arrays are equal\n"; } }
my @a=(1,2,3,4,5);
my @b=(1,2,3,4,5);
&compare(\@a,\@b);spa
輸出:two arrays are equalcode
my @a=(1,2,3,4,5);
my @b=(1,2,3,4,5,6);
&compare(\@a,\@b);orm
輸出:two arrays are not equalblog
2.以上代碼能夠簡化ci
使用智能匹配 ~~string
注意 :智能匹配是從5.10.0開始的
因此要require 5.10.0
@a ~~ @b 兩個數組相同
$x ~~ @a x在數組a中
$x ~~%hash 至關於 exists $hash{$x};
#/usr/bin/perl -w use strict; require 5.10.0; sub compare() { my $flag=0; my ($first,$second)=@_; if( @$first ~~ @$second ) { print "two arrays are equal\n"; } else { print "two arrays are not equal\n"; } }
3.使用 模塊
#!/usr/bin/perl use strict; use Array::Compare; my @array1=1..10; my @array2=1..11; my @array3=1..10; print "compare array1 and array2\n"; &check(\@array1,\@array2); print "compare array1 and array3\n"; &check(\@array1,\@array3); sub check { my ($ref1,$ref2)=@_; my $comp=Array::Compare->new; if($comp->compare($ref1,$ref2)) { print "the two arrays are the same\n"; } else { print "the two arrays not the same\n"; } }
運行結果:
D:\>perl suzu.plcompare array1 and array2the two arrays not the samecompare array1 and array3the two arrays are the same