我有一些代码:
$a = 'abcdef';
$b = 'f\1d';
$a =~ s/d(e)f/$b/g;
print $a;
我得到abcf\1d
,但我怎样才能获得abcfed
?
答案 0 :(得分:5)
$a = 'abcdef';
$b = '"f$1d"';
$a =~ s/d(e)f/$b/gee;
print $a;
请注意e
中有两个/gee
修饰符;第二个将"f$1d"
字符串评估为fed
。
作为旁注,您不需要/g
,因为您只替换了一个模式事件。
答案 1 :(得分:2)
$a
和$b
是特殊变量,用于sort
。所以你根本不能使用它们。
更好的解决方案是使用另一个变量然后:
$var_a = 'abcdef';
$var_b = '"f${1}d"';
$var_a =~ s/d(e)f/$var_b/gee;
print $var_a;
诀窍是说,替换使用\1
首先找到的var(使用/e
标志来避免使用\1
:P)