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

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

最佳答案

引用:http://perldoc.perl.org/perlop.html#Smartmatch-Operator

首先在 Perl 5.10.1(5.10.0 版本的行为不同)中可用,二进制 ~~ 在其参数之间进行“智能匹配”。

~~ 运算符“多态地”比较其操作数,根据它们的实际类型(数字、字符串、数组、散列等)确定如何比较它们。与具有相同优先级的相等运算符一样,~~ 返回 1 true 和 ""表示假。通常最好大声朗读为“in”、“inside of”或“is contains in”,因为通常在右操作数中查找左操作数。这使得智能匹配操作数的操作数顺序通常与常规匹配运算符的顺序相反。换句话说,“较小”的东西通常放在左边的操作数中,较大的放在右边的操作数中。

关于perl - perl 中的~~有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16518658/

10-11 23:17
查看更多