読者です 読者をやめる 読者になる 読者になる

成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

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

まとめ

つまり、スマートマッチ演算子は、

値の種類によって比較方法が変わる演算子

という事。(な気がしている)

しかし、全部覚えきれる気がしないし、
なんか便利によしなってくれる機能って、
もっと深く理解しないと、怖くて使えない、、、
という気がしています。

どうでも良いこと

Perlやり始めて、Rubyと似てる部分や
自分が知っている他の言語と違う部分だったりを見つけて、
改めて、いろんな言語・文化・思想に触れるのは大事だな、と感じています。
しばらくはPerlerになりそうなので、
しっかり勉強して、ログを残して行く所存です。