Programming Perlによると、左側に「any」、右側に数値を指定してスマートマッチを使用すると、数値の等価性がチェックされます。
------------------------------------------------------------------------------
| Left | Right | Description | Like (But Evaluated in Boolean Context) |
------------------------------------------------------------------------------
| Any | Num | Numeric equality | Any == Num |
したがって、次の出力が期待されます1。
my @arr = ('aaa');
my $num = 1;
say @arr ~~ $num;
しかし、実際には空の文字列を出力します。
要素が1つなので@arrスカラーに変換されると思っていたので、と同等です。1say @arr ~~ $numsay @arr == $num
@arr ~~ $numが と異なるのはなぜ@arr == $numですか?