masatoの日記

やっていきます

Perlの正規表現 s///でeオプションを使ってみる(evalオプション)

$seasonがautumnだと、it is cool!というサブルーチン。
autumn意外だと?になってしまう。

全然s///eする必然性がないけど、うまいサンプルが思いつかなかったので。

my $season = 'autumn';
my $say = temperature($season);
print $say; # it is cool!

sub temperature  {
    my $arg = shift;

    my $line = 'it is #';
    $line =~ s{#} {
      if ($arg eq 'autumn') {
          'cool!';
      } else {
          '?';
      }
  }ge;
    return $line;
}

感想

Tengのソースコードをみていたら、この書き方が使われていた。 今のところどうやって活用するのかわからないんだけど、便利そう。