我试图找出为什么这是工作: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 {...}的事实。谢谢。 –