Perl RegEx语法错误

use*_*217 7 regex perl

以下来自http://perldoc.perl.org/perlrequick.html#Search-and-replace的代码片段 给了我

Bareword发现运营商在blub.pl第2行,"s/dogs/cats/r"附近的预期位置

这有什么问题?我在Windows XP上使用Perl 5.12.4.

码:

$x = "I like dogs.";
$y = $x =~ s/dogs/cats/r;
print "$x $y\n";
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 10

您正在查看Perl 5.14的文档.该示例未出现在Perl 5.12的文档中.

您可以看到它在perl 5.13.2 delta中被标记为新功能.

您可以复制该变量,然后对其进行修改,以在旧版本的Perl中实现相同的效果.

$x = "I like dogs.";
$y = $x;
$y =~ s/dogs/cats/;
print "$x $y\n";
Run Code Online (Sandbox Code Playgroud)

或者你可以使用惯用的"单线":

$x = "I like dogs.";
($y = $x) =~ s/dogs/cats/;
print "$x $y\n";
Run Code Online (Sandbox Code Playgroud)

  • 这是人们不应该在互联网上阅读Perl文档的完美示例.您应该在您将运行perl的系统上阅读Perl的文档.那么你永远不会遇到版本不匹配的问题! (3认同)
  • @tadmc:您至少(仔细)选择文档的Perl版本[here](http://perldoc.perl.org/) (3认同)