对字符串进行拆分操作形成新的数组时,无论怎么也判断不到undef,最终是操作符用错,脚本如下:
#! /user/bin/perl
use strict;
my $temp = ("aaa,bbb,ccc,ddd,,eee");
my @temp_array = split /,/,$temp;
print "@temp_array\n";
print "$#temp_array\n";
foreach my $temp_a (@temp_array){
if($temp_a =~ /aaa/){
print "this is string aaa\n";
}
elsif($temp_a =~ /\s+/){
print "this is blank space\n";
}
else{
print "$temp_a\n";
}
};
依次输出:
aaa bbb ccc ddd eee
4
this is string aaa
this is blank space
this is blank space
this is blank space
this is blank space
this is blank space
如果把foreach里面的elsif里的绑定操作符换为eq,则会依次输出:
aaa bbb ccc ddd eee
4
this is string aaa
bbb
ccc
ddd
this is blank space
eee
结论:
字符串之间的匹配最好用绑定操作符=~
字符串和undef之间的匹配最好用eq
(以上仅个人理解,仅供参考)