我使用此命令执行查找和替换
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
、$
等。我该怎么做才能忽略所有特殊字符,只将表达式视为正常字符串
您通常需要
my $search_pat = quotemeta($search);
s/Q$search_patE/$replace/g
或等效
s/Q$searchE/$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',
)
);