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」、または「contained in」と読み上げるのが最適です。これにより、多くの場合、スマートマッチ オペランドに対するオペランドの順序が、通常の一致演算子の順序と逆になります。言い換えれば、通常、「小さい」ものは左側のオペランドに配置され、大きいものは右側に配置されます。

于 2013-05-13T09:28:21.317 に答える
0

これはスマートマッチ演算子です。

Perl Operator について知りたい場合は、 と入力してperldoc perlopください。

于 2013-05-13T09:29:23.740 に答える