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

时间:2010-01-22 06:39:52

标签: perl printf escaping

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

4 个答案:

答案 0 :(得分:7)

您要问的是插值。请参阅"Quote-Like Operators"perldoc perlop的文档,但更具体地说,使用“here-document”结合单引号的语法:

  

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

     

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

例如:

my $address = <<'EOF';
blah@blah.blah.com\with\backslashes\all\over\theplace
EOF

您可能想要阅读各种其他引用运算符,例如qwqq(与我上面引用的文档相同),因为它们非常常用并且可以很好地用于其他更冗长的逃避内容的方式。

答案 1 :(得分:1)

使用单引号。例如

print 'lots\of\backslashes', "\n";

给出

lots\of\backslashes

如果要插入变量,请使用.运算符,如

$var = "pesky";
print 'lots\of\\' . $var . '\backslashes', "\n";

请注意,您必须在字符串末尾转义反斜杠。

作为替代方案,您可以使用join

print join("\\" => "lots", "of", $var, "backslashes"), "\n";

如果你给我们提供示例代码,我们可以提供更多有用的答案。

答案 2 :(得分:0)

这取决于你逃避的内容,但类似报价的运营商可能会有所帮助。

请参阅perlop手册页。

答案 3 :(得分:0)

使用反斜杠两次,

print "This is a backslah character \\";