我有一些代码:
$a = 'abcdef';
$b = 'f\1d';
$a =~ s/d(e)f/$b/g;
print $a;
我得到的是
abcf\1d
,但我该如何获得abcfed
?我有一些代码:
$a = 'abcdef';
$b = 'f\1d';
$a =~ s/d(e)f/$b/g;
print $a;
abcf\1d
,但我该如何获得abcfed
?$a = 'abcdef';
$b = '"f$1d"';
$a =~ s/d(e)f/$b/gee;
print $a;
/gee
中有两个e
修饰符;第二个修饰符将"f$1d"
字符串评估为fed
。/g
。$a
和 $b
是用于排序的特殊变量,因此您不应该使用它们。
更好的解决方案是使用另一个变量,然后进行操作:
$var_a = 'abcdef';
$var_b = '"f${1}d"';
$var_a =~ s/d(e)f/$var_b/gee;
print $var_a;
\1
(使用/e
标志可避免使用\1
:P)。
'"f${1}d"'
?为什么'f${1}d'
会返回错误? - michaeluskovf${1}d
不是有效的Perl代码,而你正在要求Perl像解释器一样对其进行解释。 - mpapec$b = 'f${1}d'; $a =~ s/d(e)f/"$b"/gee;
дЉЪињФеЫЮйФЩиѓѓпЉЯ - michaeluskov1d
不是一个有效的标识符,所以Perl会正确消除歧义,my $b = '"f$1d"'
是可以的。 - Borodin