Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl替换参数_Perl - Fatal编程技术网

Perl替换参数

Perl替换参数,perl,Perl,我想修改Perl脚本,但我有一个问题 我阅读了关于“tr”命令的文档,但我的问题是要替换的字符串何时是可自定义的 例如,我的变量“$car”包含“&”et,我想用“\&”替换这个字符串 我试过了,但没用 ligne =~ tr/$car/\$car/ 谁能帮我 谢谢的模式将在编译时编译。对于动态替换,需要使用正则表达式替换 tr//所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情 您还需要转义反斜杠\\。如果只

我想修改Perl脚本,但我有一个问题

我阅读了关于“tr”命令的文档,但我的问题是要替换的字符串何时是可自定义的

例如,我的变量“$car”包含“&”et,我想用“\&”替换这个字符串

我试过了,但没用

ligne =~ tr/$car/\$car/
谁能帮我

谢谢

的模式将在编译时编译。对于动态替换,需要使用正则表达式替换

tr//
所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情

您还需要转义反斜杠
\\
。如果只放一个,它将转义美元符号
$
,并用文本字符串
'$car'
替换
$car
的内容

$ligne =~ s/$car/\\$car/
如果您不确定
$car
中有什么内容,您应该避开它。其中可能有一些字符在正则表达式中具有特殊意义,例如
\Q\E
将转义这些字符,因此它们将被视为文字字符

$ligne =~ s/\Q$car\E/\\$car/
另请参见,它不是直接重复。

的模式在编译时编译。对于动态替换,需要使用正则表达式替换

tr//
所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情

您还需要转义反斜杠
\\
。如果只放一个,它将转义美元符号
$
,并用文本字符串
'$car'
替换
$car
的内容

$ligne =~ s/$car/\\$car/
如果您不确定
$car
中有什么内容,您应该避开它。其中可能有一些字符在正则表达式中具有特殊意义,例如
\Q\E
将转义这些字符,因此它们将被视为文字字符

$ligne =~ s/\Q$car\E/\\$car/

另请参阅,这不是直接重复。

由于
$car
包含一个caractère而不是regex模式,因此应使用
s/\Q$car\E/\\$car/
(或速度较慢的
s/(\Q$car\E)/\\$1/
)。由于
$car
包含一个caractère而不是regex模式,因此应使用
s/\Q$car E/\$car(或速度较慢的
s/(\Q$car\E)/\\$1/
)。