正規表現とか(1)
さっそく、Hokkaido.pm#3で学んだお話だよ!
やってることは、a,b,c…x,y,zまでのいずれかの文字が連続したところを探して、
該当箇所を取得しちゃうっていうスクリプト。
use strict; use warnings; my $str = "abc,def,ghi"; #my ($foo) = $str =~ m/([a-z]+)/; # こういう書き方もあるよ! my ($foo) = $str =~ m/(\w+)/; print $foo . "\n"; # => abc print "\n"; my $bar = $str =~ m/(\w+)/; print $bar . "\n"; # => 1 print "\n";
これの重要なところは、
後者は該当箇所は存在するか否かが返ってくるってこと。
パースしたいのか、有無を知りたいのかで、
書き方が違うよってお話。
私は後者しか知らなかったので、
$1, $2,…とか使ってました。
ちなみに、こう書くとすべて取得できるよ!
my @tmp = $str =~ m/(\w+)/g; print scalar(@tmp) . "\n"; # => 3 print $tmp[0] . "\n"; # => abc print $tmp[1] . "\n"; # => def print $tmp[2] . "\n"; # => ghi print "\n";
でも、この辺の話って、
「配列」「リスト」「評価」「コンテキスト」とか、
この手のキーワードをもっさり出てきてうれしくないので、
懇親会でさりげなくリクエスト出しておきました。
こういった、今更聞けないperlのお話も、
Hokkaido.pmなら聞けるよ!
では、おやすみなさい!!
Leave a Comment