perl - 在没有quotemeta的字符串中转义特殊字符

-1 regex string perl special-characters

我有一个带有特殊字符和换行符的Perl字符串,需要传递给命令行实用程序(除非转义,否则不接受特殊字符).

如何用前面的每个特殊字符替换\

我可以单独替换每个字符,但想知道是否有更好的方法?

从spreasheet中的单元格读取时,字符串如下所示.

<meta property="og:url" content="http://www.example.com/test/testpage.aspx?ID=OO3JUPVSWjs%3d&ContentTypeId=qbeAILfmBIE%3d" />
Run Code Online (Sandbox Code Playgroud)

我试过了 $str =~ /^\Q$str\E/;

但是当变量传递给命令行实用程序时失败.

Mil*_*ler 5

正如您已经指出的那样,您可以使用 quotemeta

$str = quotemeta $str;
Run Code Online (Sandbox Code Playgroud)

但是,如果由于某种原因这不好,您可以构建自己想要转义的字符类

$str =~ s/([\\'"])/\\$1/g;
Run Code Online (Sandbox Code Playgroud)