在替换时引用perl中的字符串

时间:2013-06-04 10:09:43

标签: perl

我必须在perl中使用替换方法。 但问题是要替换的字符串相当复杂并且包含特殊字符。

要搜索的字符串:

K6D2wlawNtxOMrTOiEwnz12Y1qvn

要替换的字符串:

TO_DATE('03/31/2013 02:00:00', 'MM/DD/YYYY HH24:MI:SS')

虽然要搜索的字符串相当简单,但要替换的字符串相当复杂,正常的替换不起作用:

perl -p -i -e "s/$search/$replace/g" file

perl中是否有其他引用方法,我可以覆盖这些正则表达式规则并简单地替换上面的复杂字符串?

我必须强调,我不能编辑要替换的字符串,因为它来自其他来源,可能是SQL中的各种其他函数,因此不在我的控制范围内。

2 个答案:

答案 0 :(得分:4)

使用其他替换分隔符,即s| vs s/

perl -p -i -e "s|K6D2wlawNtxOMrTOiEwnz12Y1qvn|TO_DATE('03/31/2013 02:00:00', 'MM/DD/YYYY HH24:MI:SS')|" file

答案 1 :(得分:3)

如果要将其视为普通字符串,则应在其上调用 quotemeta 以转义任何特殊字符,或使用等效序列,即

perl -p -i -e "s/\Q$search\E/\Q$replace\E/g" file