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;