我試圖找出爲什麼這是工作:Perl的操作符/// G未按預期
$_='12+34';$x=1;
s/(\d+)(.)(\d+)/"\$x$2$2"/ee; # This is working, does $x++
print "x=$x \n"; # x=2
雖然這不是:
$_='12+34';$x=1;
s/(\d+)(.)(\d+)/\$x$2$2/e; # This is NOT working
# Error message is :
# Scalar found where operator expected at ./test.pl line 2, near "$x$2"
# (Missing operator before $2?)
我有膽量說s/xxx/yyy/e
和s/xxx/"yyy"/ee
應該表現相同,但顯然我錯了。
我缺少什麼?
Correcto !! '/ ee' double評估RHS – 2016-11-15 13:33:54
@Gerry:*錯誤!*我竭盡全力解釋第一個'/ e'將替換視爲*表達式*。它不會「評估」任何東西。第二個'/ e'將'eval'表達式的值 – Borodin
完美答案。現在更清楚了。我錯過了替換部分嵌入在使用/// e修飾符時不存在的不可見qq {...}的事實。謝謝。 –