2010-01-22 56 views
0

如何在不將Perl作爲轉義字符的情況下打印地址字符串?我不想通過添加更多轉義字符來更改字符串。如何防止Perl將解釋爲轉義字符?

+3

你能發佈是造成該問題的代碼? – 2010-01-22 06:44:04

+2

對不起,你會走運。 '\\'是轉義字符,如果你想要一個字面值,你必須轉義它。 – 2010-01-22 07:07:25

+0

@Chris:bzzt! :) – Ether 2010-01-22 07:37:05

回答

0

這取決於你在逃避什麼,但類似Quote的操作員可能會提供幫助。

請參閱perlop手冊頁。

7

你在問什麼叫做插值。見"Quote-Like Operators"文檔在perldoc perlop,但更具體地做到這一點是與被稱爲「這裏的文檔」的語法方式結合單引號:

單引號表示將文本與沒有字面上的處理對其內容進行插值。這與單引號字符串類似,只是反斜槓沒有特殊含義,\被視爲兩個反斜槓,而不是像其他每個引用構造中的反斜槓那樣。

這是在perl中引用的唯一形式,不需要擔心轉義內容,這是代碼生成器可以並且很好利用的東西。

例如:

my $address = <<'EOF'; 
[email protected]\with\backslashes\all\over\theplace 
EOF 

您可能希望在其他各種報價運營商如qwqq(正如我上面提到的在同一文件)讀了起來,因爲它們是很常用的併爲其他更加冗長的逃避內容的方式做好速記。

+0

我也想過那個!出於某種原因,我認爲它仍然會插入反斜槓。愚蠢的Python使我混淆了我的字符串插值。 (唯一需要注意的是這會增加一個可能不希望的數據末尾添加新行) – 2010-01-22 07:52:30

+0

@Chris:確實,在這種情況下,substr()或chomp()會很好地修理它。 – Ether 2010-01-22 08:07:09

+3

但是,不要忘記,你可以逃避'和\甚至在單引號的字符串。我應該改變文檔以指出這一點。 :) – 2010-01-22 18:49:26

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"; 

我們可以給更多有用的答案,如果你想給我們的示例代碼。

0

使用backslah兩次,

print "This is a backslah character \\"; 
相關問題