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);
输出:two arrays are equal
my @a=(1,2,3,4,5);
my @b=(1,2,3,4,5,6);
&compare(\@a,\@b);
输出:two arrays are not equal
2.以上代码可以简化
使用智能匹配 ~~
注意 :智能匹配是从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.pl
compare array1 and array2
the two arrays not the same
compare array1 and array3
the two arrays are the same