我看到了这段代码,无法理解它在做什么,它编译成功。我搜索了 ~~ OPERATOR 但没有运气。
unless ($1 ~~ @tables) {
push @tables, $1;
}
参考: http: //perldoc.perl.org/perlop.html#Smartmatch-Operator
首先在 Perl 5.10.1 中可用(5.10.0 版本的行为不同),二进制 ~~ 在其参数之间进行“智能匹配”。
~~ 运算符“多态地”比较它的操作数,确定如何根据它们的实际类型(数字、字符串、数组、哈希等)比较它们。就像它共享相同优先级的相等运算符一样,~~ 返回 1 true 和 "" 为 false。通常最好将其朗读为“in”、“inside of”或“is contains in”,因为左操作数通常在右操作数内部查找。这使得 smartmatch 操作数的操作数的顺序通常与常规匹配运算符的顺序相反。换句话说,“较小”的东西通常放在左边的操作数中,较大的放在右边的操作数中。
这是一个智能匹配运算符。
如果您想了解 Perl 运算符,只需键入perldoc perlop
.