Ruby と perl の微妙な違い

Ruby と perl は同じスクリプト言語なので、共通点がいくつかありますが、それが思わぬ結果を生むことがあります。

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 (0) | trackbacks (0)

Comments

Comment Form

icons:

Trackbacks