perl 判断数组相等的三种方法

1.数组相等,数组成员相同,位置也相同

一般的如果判断@array1 等于 @array2

a.数组长度相同 $#array1=$#array2, 比较数组长度,不能使用length函数,length只适用string类型

数组参数传递,不能直接传递

 

复制代码
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

 

posted @   to be crazy  阅读(7201)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示