直接比较数组名字即可,不必逐个元素比较。my@a= (1..10) my@b= (1..10) if(@a==@b) {print"equal\n"#equal}
但需要注意一点,如果是数组的引用,那么就不能直接比较了。必须先解引用再比较。my$aref1= [1..10] my$aref2= [1..10] if($aref1==$aref2) {print"equal\n"# not equal}
先解引用再比较my$aref1= [1..10] my$aref2= [1..10] if(@$aref1== @$aref2) {print"equal\n"# equal}打印数组
最笨的方法,多半来自其他语言比较熟悉的coder们。其中$#numbers表示数组numbers的最后一个元素的下标。在这里时9,所有要使用<=,而不是<,否则会漏掉最后一个元素。my@numbers= (1..10)for(my$i=0$i<= $#numbers++$i) {print$numbers[$i],"\n"}
其实普通数组直接打印即可,无需遍历。my@a= (1..10) print@a
方法一
直接遍历数组,逐个元素判断。方法二是用grepmy@Colors= ('Red','Green','Yellow',)if(grep{$_eq'Red'}@Colors) {print"Exists!\n"}}方法三
如果是perl 5.10.0以上,可以使用智能匹配,如下。my@array= (1,2,3,4,5) my$var=2if($var~~@array) {print"$var exists in (@array)\n"}定义空列表
定义空列表用(),而不是undef
下面代码输出1,这种写法表示列表的第一个元素是undef.严格的说并不是空列表。my@list=undefpush@list,1push@list,2print$list[1],"\n"#Output 1
下面代码输出2my@list= ()push@list,1push@list,2print$list[1],"\n"#Output 2
unless(xxx) 与 unless defined(xxx)
这两者是不一样的,前者表示xxx为假的时候执行代码,而后者表示xxx未定义时执行代码,也就是只有当xxx==undef时,后者才会执行,而前者以下几种情况都会执行的。xxx==undefxxx=0xxx='0'xxx=''xxx=""
将数组元素分组