私はこのコードを見ましたが、それが何をしているのか理解できませんでした。コンパイルは成功しました。~~ 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」、または「contained in」と読み上げるのが最適です。これにより、多くの場合、スマートマッチ オペランドに対するオペランドの順序が、通常の一致演算子の順序と逆になります。言い換えれば、通常、「小さい」ものは左側のオペランドに配置され、大きいものは右側に配置されます。
これはスマートマッチ演算子です。
Perl Operator について知りたい場合は、 と入力してperldoc perlop
ください。