從http://perldoc.perl.org/perlrequick.html#Search-and-replace採取下面的代碼片段讓我Perl的正則表達式語法錯誤
裸詞發現,其中運營商預計將在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";
從http://perldoc.perl.org/perlrequick.html#Search-and-replace採取下面的代碼片段讓我Perl的正則表達式語法錯誤
裸詞發現,其中運營商預計將在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";
您正在尋找爲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";
或者你可以使用慣用的 「一個班輪」:
$x = "I like dogs.";
($y = $x) =~ s/dogs/cats/;
print "$x $y\n";
這是人們爲什麼不應該在Interweb上閱讀Perl文檔的完美例子。您應該在要運行perl的系統上讀取Perl的文檔。那麼你永遠不會遭受一輪又一輪的版本不匹配! – tadmc
@tadmc:你可以至少(仔細)選擇文檔的Perl版本[here](http://perldoc.perl.org/) – JRFerguson
我使用(在Linux上)相同的版本,並得到同樣的錯誤加上
非上市字符串「r」可能與將來的保留字衝突
它在我刪除r時起作用。該教程從5.14開始,可能是r
功能尚未在5.12中實現。
恩,這正是它說的嗎?最後的'r'是什麼? –
@BrianRoach這是非破壞性修改器 – NullUserException
呃,好的。所以,我是對的......但僅僅因爲我從來沒有用過perl 5.14 :-D –