2012-09-14 10 views
5

Perlのドキュメントの状態:Perl正規表現で/ rフラグを使用するには?

e Evaluate 'replacement' as an expression 
r Return substitution and leave the original string untouched. 

は、置換パターンで使用される利用可能なフラグです。置換パターンにrフラグを渡すと、構文エラーとして解釈されます。私はPerl 5.8.8を実行しています。 Perlの私のバージョンではサポートされていない可能性がありますか?また、誰かがフラグを使用する方法と、新しく作成した置換えを呼び出す方法の実例を提供できますか?

答えて

15

おそらく5.8.8のドキュメントを読んでいるはずですか?/rが5.14に追加されました! 5.8.8では

、あなたは、sのサンプル・用法が/// R

do { (my $s = $_) =~ s/foo/bar/; $s } 

s/foo/bar/r 

のと同等の操作を行うことができます

print "abba" =~ s/b/!/rg;   # Prints a!!a 

my $new = $old =~ s/this/that/r; # Leaves $old intact. 

my $trimmed = $val =~ s/^\s+//r =~ s/\s+\z//r; 
my $trimmed = (($val =~ s/^\s+//r) =~ s/\s+\z//r); # Same as previous 
+0

はあなたでした5.14でそれを呼び出す方法を示します。私はそれがどのように異なる変数を返すのか混乱していますが、それを実行するためには変数には注意する必要があります。たとえば、次のようになります。 $ var =〜s/this/that/r; 新しい変数はどこに保存されますか? – user1671989

+0

@ user1671989、返されます。 « 'print" abc "=〜s/b /!/ rg;'» "a!c'»を出力します。 – ikegami

+0

それが返されて私がそれを好きだと呼んだ場合 $ var =〜s/this/that/r; 本当に$ varは上書きされますか? $ varで実行して$ new_varに戻すにはどうしたらいいですか?申し訳ありませんが、それは私の頭を包んで問題を抱えています。 – user1671989