Perl中的转义字符
一个愚蠢的问题 我正在尝试用Perl中的转义字符,perl,escaping,Perl,Escaping,一个愚蠢的问题 我正在尝试用$option>$option\u translated搜索并替换“$option”>$option\u translated 在unix终端中执行此命令时,它工作正常 sed -i 's/"$option">$option_translated/$option>$option_translated/g' filename.txt 但是当我在Perl脚本中使用它时,它就不起作用了 my $cmd = ("sed -i 's/"$option">$o
$option>$option\u translated
搜索并替换“$option”>$option\u translated
在unix终端中执行此命令时,它工作正常
sed -i 's/"$option">$option_translated/$option>$option_translated/g' filename.txt
但是当我在Perl脚本中使用它时,它就不起作用了
my $cmd = ("sed -i 's/"$option">$option_translated/$option>$option_translated/g' $filename");
qx{$cmd};
我认为有些角色需要在这里转义。让我知道那些是什么。谢谢。您需要转义引号:
my $cmd = ("sed -i 's/\"$option\">$option_translated/$option>$option_translated/g' $filename");
here__^ __^
或者使用不同的报价运算符而不是“
,例如:
my $cmd = qq(sed -i 's/"$option">$option_translated/$option>$option_translated/g' $filename);
您不需要为此从Perl调用
sed
,使用Perl的正则表达式功能,只需使用\Q
\E
对其进行转义,或者仅用于(据我所知,您正在尝试删除“
):
哦,是的,我会用这个,谢谢:)但是因为在问题中我用了“sed”,所以我不得不接受M42的答案。
my $str = '"$option">$option_translated';
$str =~ s/"//g;
print $str;