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
转载请注明出处:http://www.cnblogs.com/tobecrazy/

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义