Perl 中有没有办法在字符串变量中保留和打印所有反斜杠?例如:
$str = 'a\\b';
输出是
a\b
但是我需要
a\\b
问题是无法以任何方式处理字符串以转义反斜杠,因为我必须从数据库中读取复杂的正则表达式并且不知道它们出现在哪个组合和数字中,并且必须完全按照它们在网页。
我尝试使用模板工具包以及 html 和 html_entity 过滤器。到目前为止,唯一可行的方法是使用单引号此处的文档:
print <<'XYZ';
a\\b
XYZ
但是我不能插入变量,这使得这个解决方案毫无用处。
我试图将字符串写入网页、文件和外壳,但没有运气,总是一个反斜杠消失。也许我完全走错了路,但是打印复杂正则表达式的正确方法是什么,包括所有组合和数字中的反斜杠而不做任何更改?
换句话说:我有一个包含数百个正则表达式作为字符串数据的数据库。我想用 perl 阅读它们并将它们打印在网页上,就像它们在数据库中一样。许多管理员一直在对这些正则表达式进行更改,所以我事先不知道如何以及如何逃避。一个典型的例子看起来像这样:
'C:\\test\\file \S+'
但它可能会在第二天更改为
'\S+ C:\\test\\file'
也许一个正确的结论是,无论它出现在哪个组合和哪个数字中,都将每个反斜杠恰好转义一次?这意味着它可以将它们加倍。那么问题就没有我担心的那么大了。我在 bash 上对其进行了测试,它可以连续使用两个甚至三个反斜杠(4 个反斜杠打印 2 个反斜杠,6 个反斜杠打印 3 个反斜杠)。