我正在使用此命令执行查找和替换
system( "perl -pi -e 's/$arr3[$i]/$arr2[$i]/g' /opt/app/d1ebl1m5/dv02/cingbt02/J2EEServer/config/AMSS/application/properties/CSCEnvVar.properties_try");
$arr3[$i]
的值包含-e
,$
等特殊字符。我该如何忽略所有特殊字符,只需将表达式视为普通字符串
答案 0 :(得分:2)
您通常需要
my $search_pat = quotemeta($search);
s/\Q$search_pat\E/$replace/g
或等效的
s/\Q$search\E/$replace/
生成代码通常是一个坏主意,因此解决方案变为
system(
perl => (
'-i', '-p',
'-e' => '
BEGIN { $s = shift(@ARGV); $e = shift(@ARGV); }
s/\Q$s/$e/g
',
'--',
$arr3[$i],
$arr2[$i],
'/opt/app/.../CSCEnvVar.properties_try',
)
);