如何防止Perl将\解释为转义字符?

kk.*_*kk. 0 perl printf escaping

如何在不使Perl将斜杠作为转义字符的情况下打印地址字符串?我也不想通过添加更多转义字符来改变字符串.

Eth*_*her 7

您要问的是插值.请参阅perldoc perlop上的"类似引擎的运算符"文档,但更具体地说,执行此操作的方法是使用名为"here-document"的语法并结合单引号:

单引号表示文本将按字面处理,不对其内容进行插值.这类似于单引号字符串,除了反斜杠没有特殊含义,\被视为两个反斜杠而不是其他每个引用构造中的反斜杠.

这是perl中唯一的引用形式,无需担心转义内容,代码生成器可以并且很好地利用它.

例如:

my $address = <<'EOF';
blah@blah.blah.com\with\backslashes\all\over\theplace
EOF
Run Code Online (Sandbox Code Playgroud)

您可能希望阅读各种其他引用运算符,例如qwqq(与我上面引用的文档相同),因为它们是非常常用的,并且是其他更冗长的转义内容的方法的良好缩写.

  • 但是,不要忘记,你可以在单引号字符串中转义'和\.我应该更改文档以注意到这一点.:) (3认同)