Perl勉強日誌 - スマートマッチ
お久しぶりです。
しばらくブログ書いてませんでした。
(単純にさぼってました。。。orz)
諸事情ありまして、Perlを勉強し始めたので、
ログを残して行きたいと思います。
追記
スマートマッチは現在非推奨だそうです。
perl5180delta - perl v5.18.0 での変更点 - perldoc.jp
残念、、、、orz
(なんとなく、そんな気もしてましたがw)
今日のテーマ
リャマ本:15章
スマートマッチ
それ何?
Perlさんがスマート(賢く)にマッチしてくれる演算子。
らしいです。
つまり値の種類によって、いろいろ良い感じに比較してくれる、と。
スマートマッチ演算子は、Perl5.10.0で登場したそうですが、
問題があったらしく、Perl5.10.1でfixされたそうです。
その為、
use 5.010001; # use v5.10.1; の方が良いのか????
とするのが、良いそう。
スマートマッチ演算子
では実際に使ってみます。
my $hoge = "hello, world!!!"; say "matched regex" if $hoge ~~ /hello/; # ① say "matched string" if $hoge ~~ "hello, world!!!"; # ②
上記の
~~
これが「スマートマッチ演算子」です。
上記①の場合、
右辺が正規表現なので、正規表現で比較されています。
つまり、
$hoge =~ /hello/
と同じ事になるはず。
上記②の場合、
右辺が文字列なので、文字列として比較されています。
つまり、
$hoge eq "hello, world!!!"
と同じ事になるはず。
その他の比較
以下のページを見れば、どんなマッチが出来るか記載されています。
perlop - perldoc.perl.org