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

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

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

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

sub compare()
{
my $flag=;
my ($first,$second)=@_;
if (@$first==@$second) # the number of the array , don't use length()
{
for(my $i=;$i<@$first;$i++)
{
if($first->[$i]!=$second->[$i])
{
$flag=;
print "$first->[$i]==$second->[$i]\n";
}
}
}
else
{
$flag=;
}
if( $flag==)
{
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.;
sub compare()
{
my $flag=;
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=..;
my @array2=..;
my @array3=..;
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

perl 判断数组相等的三种方法的更多相关文章

  1. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  2. 判断图连通的三种方法——dfs,bfs,并查集

    Description 如果无向图G每对顶点v和w都有从v到w的路径,那么称无向图G是连通的.现在给定一张无向图,判断它是否是连通的. Input 第一行有2个整数n和m(0 < n,m < ...

  3. 数组k平移三种方法(java)

    上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...

  4. 【JS】JS数组添加元素的三种方法

    1.push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 1).语法: arrayObject.push(newelement1,newelement2,....,newelement ...

  5. js数组去重的三种方法

    <script type="text/javascript"> /*// 第一种冒泡法删除 var arr=[1,2,2,78,3,456,456]; for(var ...

  6. js 数组去重的三种方法(unique)

    方法一: Array.prototype.unique=function(){ var arr=[];//新建一个临时数组 for(var i=0;i<this.length;i++){//遍历 ...

  7. 数组去重的三种方法及from方法

    直接上代码: var str="adbbckddwerivka"; var arr=str.split(""); console.log(arr); //ind ...

  8. Jquery判断Checkbox是否选中三种方法

    方法一:if ($("#checkbox-id")get(0).checked) {    // do something} 方法二:if($('#checkbox-id').is ...

  9. 数组去重的三种方法 es6

    [1,2,3,4,5,6,7,8,9,2,2,3,3,4,1].filter(function(el,index,arr){ return (index === arr.indexOf(el)); } ...

随机推荐

  1. 使程序在Linux下后台运行

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

  2. ajax实例详解(2)

    说到ajax当然离不开json格式了.在ajax的数据传递过程中用到最多的便是json格式了吧. 什么是json格式,在刚开始用它的时候,着实让人迷茫了一阵子呀.说的白了点所谓json不就是一种数据的 ...

  3. Swing杂记——Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力

    [摘要] 本文诣在展示如何在Swing中引入 NinePatch技术(早期有文章里中文译作九格图,暂且这么叫吧^_^,但此术非传统移动手机上的功能布局——九格图哦). [准备篇] Q:何为 NineP ...

  4. css使 同一行内的 文字和图片 垂直居中对齐?

    设置父容器, 使 父容器 div 下的所有元素 都 垂直对齐: father-container *{ vertical-align:middle 找回密码

  5. 在XP、Win7/8上如何右键进入命令行

    在Win7/8上特别简单,只需要在按下shift键后,再点击鼠标右键,即可进入命令行界面.

  6. 大熊君大话NodeJS之------Net模块

    一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列(大熊君大话NodeJS)文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事 ...

  7. 包介绍 - UriTemplates (用于处理格式化Uri模板)

    UriTemplates 用于处理格式化Uri模板 PM> Install-Package Tavis.UriTemplates 设置Uri Path Segment [Fact] public ...

  8. WP8.1下 Cortana语音命令 VCD文件 设计

    Windows Phone8.1下的Cortana,可以通过语音的方式,打开.设置应用,进行页面跳转.执行任务. 我们先要创建VCD(VoiceCommand.xml)文件 <?xml vers ...

  9. mongoDB--1 概念

    1.结构 (1)关系型数据库,数据库,对应mongo中的,数据库 (2)关系型数据库,表,对应mongo中的,集合 (3)关系型数据库,一条记录,对应mongo中的,一个文档(是一条json结构的数据 ...

  10. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...