3

我看到了这段代码,无法理解它在做什么,它编译成功。我搜索了 ~~ OPERATOR 但没有运气。

 unless ($1 ~~ @tables) {
 push @tables, $1;
 }
4

2 回答 2

6

参考: 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 操作数的操作数的顺序通常与常规匹配运算符的顺序相反。换句话说,“较小”的东西通常放在左边的操作数中,较大的放在右边的操作数中。

于 2013-05-13T09:28:21.317 回答
0

这是一个智能匹配运算符。

如果您想了解 Perl 运算符,只需键入perldoc perlop.

于 2013-05-13T09:29:23.740 回答