当我使用\Q$btype
时,当我使用center
进行硬编码时,有人可以告诉我为什么我的脚本在我使用$$
时会搜索/替换吗?
该脚本假设在\end{center}
之后插入#!/usr/bin/perl
my $line = '\end{tabular}
\end{center}
end:text
';
my $btype = "center";
$line =~ s/\\end\{\Q$btype\}/\\end\{\Q$btype\}\$\$/g;
print "$line\n";
。
{{1}}
答案 0 :(得分:6)
您需要停止转义:
$line =~ s/\\end\{\Q$btype\E\}/\\end\{$btype\}\$\$/g;
# here __^^
可以减少到:
$line =~ s/\\end\{\Q$btype\E\}\K/\$\$/g; # 5.10+
或
$line =~ s/(\\end\{\Q$btype\E\})/$1\$\$/g;
或
$line =~ s/\\end\{\Q$btype\E\}/$&\$\$/g;
来自ThisSuitIsBlackNot的评论:
由于performance issue,请不要在v5.20之前将它与perl一起使用。
或
$line =~ s/(?<=\\end\{\Q$btype\E\})/\$\$/g;