Perl の smart match ではまったのでめもめも。
1. 比較的 smart な使い方
- smart か smart でないかと問われれば smart かなと思う
grep
とかでごりって感じでやるよりは smart かなと思う
my $hoge = 3;
if ($hoge ~~ [1, 3, 5]) {
warn '$hoge is 1 or 3 or 5';
}
- 当然、出力は以下
$hoge is 1 or 3 or 5
2. smart さを発揮できない使い方
if ('0.00' ~~ '0') {
warn 'smart match!';
}
if ('0.00' == '0') {
warn 'match!';
}
- なんと、出力は以下
match!
- smart match も内部的に数値比較をする仕組みを含んでいるはずなのですが、この場合はそれよりも文字列比較が優先されてしまうよう…
まとめ
- smart match は思ったより smart 感がない
- 1 みたいな使い方以外で乱用するのは控えた方が良さそう