perl 判斷數組相等的三種方法

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

相關文章
相關標籤/搜索