Perl RegEx语法错误

时间:2011-11-16 15:45:01

标签: regex perl

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

  

Bareword发现运营商预计在blub.pl第2行附近   “S /狗/猫/ R”

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

代码:

$x = "I like dogs.";
$y = $x =~ s/dogs/cats/r;
print "$x $y\n";

2 个答案:

答案 0 :(得分:10)

您正在查看Perl 5.14的文档。该示例未显示在the documentation for Perl 5.12

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

您可以复制变量,然后修改它以在旧版本的Perl中实现相同的效果。

$x = "I like dogs.";
$y = $x;
$y =~ s/dogs/cats/;
print "$x $y\n";

或者您可以使用惯用语“one-liner”:

$x = "I like dogs.";
($y = $x) =~ s/dogs/cats/;
print "$x $y\n";

答案 1 :(得分:2)

我使用相同的版本(在Linux上)并获得相同的错误加

  

不带引号的字符串“r”可能与将来的保留字

冲突

当我删除r时它会起作用。该教程来自5.14,可能是5.12中尚未实现r功能。