6

Perl 文档指出:

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

是可用于替换模式的标志。当我将r标志传递给我的替换模式时,它被解释为语法错误。我正在运行 Perl 5.8.8。我的 Perl 版本是否可能不支持它?另外,有人可以提供一个如何使用标志以及如何调用新创建的替换的工作示例吗?

4

1 回答 1

15

那么,也许您应该阅读 5.8.8 的文档?/r 已添加到 5.14!

在 5.8.8 中,您可以执行相当于

s/foo/bar/r

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

s///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
于 2012-09-14T16:57:17.500 回答