Ruby と perl の微妙な違い
Ruby と perl は同じスクリプト言語なので、共通点がいくつかありますが、それが思わぬ結果を生むことがあります。
perl の場合
一方 Ruby は
perl の場合
$hoge = "abcdefg";
$hoge =~ m/c(def)/;
if($hoge =~ m/(ho)ge/){
print "nocode\n";
}
else{
print $1 , "\n";
}とすると最初のマッチ結果のdefが出力されます。一方 Ruby は
$hoge = "abcdefg"
$hoge =~ /c(def)/
if $hoge =~ /(ho)ge/
print "nocode\n"
else
print $1 + "\n"
endとすると if 文内のマッチ結果がなかったことを示すnilが出力されます。微妙な違いですが perl 使いの人は気をつけましょう。ちなみに Ruby では
/(ho)ge/ =~ $hogeのように前後逆に書くことが推奨されていますが、どちらでも動くので、あまり気にしなくてよいでしょう。個人的には、
$hoge[/(ho)ge/]という書き方が気に入っています。
Comments