perl 的智能匹配操作符号根据需要自己决定如何比较两端操作数。
使用方法
下表是智能匹配操作符对不同操作数的处理方式
例子 | 匹配方式 |
%a ~~ %b | 哈希的键是否一致 |
%a ~~ @b | 至少 %a 中的一个键在列表@b中 |
%a ~~ /Fred/ | 至少一个键匹配给定的模式 |
%a ~~ 'Fred' | 哈希中某一指定键$a{Fred}是否存在 $a{Fred} |
@a ~~ @b | 数组是否相同 |
@a ~~ /Fred/ | 有一个元素匹配给定的模式 |
@a ~~ 123 | 至少有一个元素转化为数字后是123 |
@a ~~ 'Fred' | 至少有一个元素转化为字符串后是'Fred' |
$name ~~ undef | $name确实尚未定义 |
$name ~~ /Fred/ | 模式匹配 |
123 ~~ '123.0' | 数字和字符串是否相等 |
'Fred' ~~ 'Fred' | 字符串是否相同 |
123 ~~ 456 | 数字是否相等 |
当使用只能匹配操作符时,Perl会按此表自上而下查看使用的操作数。先找到哪一种匹配就选择对应的操作。
注意:当两个标量以字符串的形式存储像123,123.12这些数字的时候,使用智能匹配操作符进行比对时会默认将这些字符串转换为数字,然后在进行比对。
例子:
use 5.010;