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

如何防止Perl将\解释为转义字符?,perl,printf,escaping,Perl,Printf,Escaping,如何打印地址字符串而不使Perl将斜杠作为转义字符?我不想通过添加更多转义字符来改变字符串。这取决于转义的内容,但类似引号的运算符可能会有所帮助 请参阅perlop手册页。您所询问的内容称为插值。请参阅at的文档,但更具体地说,方法是使用称为“here document”的语法并使用单引号: 单引号表示文本将被逐字处理,不插入其内容。这类似于单引号字符串,只是反斜杠没有特殊意义,它被视为两个反斜杠,而不是像在其他每个引号构造中那样一个 这是perl中唯一不用担心转义内容的引用形式,代码生成器可以

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

这取决于转义的内容,但类似引号的运算符可能会有所帮助


请参阅perlop手册页。

您所询问的内容称为插值。请参阅at的文档,但更具体地说,方法是使用称为“here document”的语法并使用单引号:

单引号表示文本将被逐字处理,不插入其内容。这类似于单引号字符串,只是反斜杠没有特殊意义,它被视为两个反斜杠,而不是像在其他每个引号构造中那样一个

这是perl中唯一不用担心转义内容的引用形式,代码生成器可以并且确实很好地利用了这一点

例如:

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

my$address=使用单引号。比如说

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

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

或者,您可以使用
加入

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

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

使用后拉两次

print "This is a backslah character \\";

你能发布导致问题的代码吗?对不起,你会倒霉的是转义字符,如果你想要一个文字字符,你必须转义它。我也想过这个!出于某种原因,我认为它仍然会插入反斜杠。愚蠢的Python让我搞混了我的字符串插值。(这个答案需要补充的唯一一点是,这可能会在数据的末尾添加一个不希望的换行。)@Chris:的确,在这种情况下,
substr()
chomp()
会很好地修复它。但是,不要忘了,即使在单引号字符串中,也可以转义'and'。我应该更改文档以注意:)
print join("\\" => "lots", "of", $var, "backslashes"), "\n";
print "This is a backslah character \\";