本文主要记录一下,perl中的智能匹配。

#=====================================
# 智能匹配操作符:~~
#=====================================
my $name = "I saw Fred and merry!";
#普通匹配符号
print "I found Fred in the name!\n" if $name =~ /Fred/;
#智能匹配符号
print "I found Fred in the name!\n" if $name ~~ /Fred/;
# 哈希数组的智能匹配
my %names = ("one" => 1, "two" => 2, "three" => 3, "four" => 4,
"five" => 5, "six" => 6);
my $flag = 0;
foreach my $key (keys %names){
next unless $key =~ /four/;
$flag = $key;
last;
}
print "I found a key matching 'four'\n" if $flag;
# 上面的语句等价于下边一条语句
print "I found a key matching 'four'\n" if %names ~~ /four/;
my @name1 = qw(one two three four five);
my @name2 = qw(one two three four five);
my $equal = 0;
foreach my $index (0..$#name1){
last unless $name1[$index] eq $name2[$index];
$equal ++;
}
print "The arrays have the same elemnts!\n" if $equal == @name1;
# 上面的语句等价于下边一条语句
print "The arrays have the same elemnts!\n" if @name1 ~~ @name2;
my @nums = qw(1 2 3 37 43);
my $flag = 0;
foreach my $num (@nums){
next unless $num == 37;
$flag = 1;
last;
}
print "在数组中找到了 37 !\n" if $flag;
# 上面的语句等价于下边一条语句
print "在数组中找到了 37 !\n" if @nums ~~ /37/;