2010-01-08 156 views
5

我剛開始學習Perl。我看着beginning perl page並開始工作。Perl中單引號和雙引號的區別是什麼?

它說:

單引號和雙引號之間的區別在於,單引號意味着他們的內容應該從字面上理解,而雙引號意味着它們的內容應該被解釋

當我運行此程序:

#!/usr/local/bin/perl 
print "This string \n shows up on two lines."; 
print 'This string \n shows up on only one.'; 

它輸出:

 
This string 
shows up on two lines. 
This string 
shows up on only one. 

我錯了嗎? 版本以下的Perl:

perl -v 

This is perl, v5.8.5 built for aix 

Copyright 1987-2004, Larry Wall 

Perl may be copied only under the terms of either the Artistic License or the 
GNU General Public License, which may be found in the Perl 5 source kit. 

Complete documentation for Perl, including FAQ lists, should be found on 
this system using `man perl' or `perldoc perl'. If you have access to the 
Internet, point your browser at http://www.perl.com/, the Perl Home Page. 
+1

請給更多的信息標題您的問題,在這種情況下,「如何在Perl串插工作,不同類型的報價?」。這有助於正確的人查看和回答你的問題。 – 2010-01-08 14:34:40

+3

「perl疑問」:可怕的標題!我會把它編輯成合理的。 – 2010-01-08 14:34:44

+6

我無法複製您的問題。第二張照片出現在我的一條線上,正如我預期的那樣。請提供更多信息:您使用的是哪種操作系統和Perl版本?顯示以下輸出:perl -v – toolic 2010-01-08 14:45:10

回答

15

我傾向於說你的shell /終端有什麼問題,並且你輸出的任何內容都將\ n作爲新行解釋,並且問題不在於Perl。

要確認:這不應該發生(TM) - 在第一種情況下我希望看到一個新行插入,但單引號它應該按照字面直接輸出字符\ n一新隊。

1

通過「解釋」,他們的意思是變量名和這樣不會被打印出來,但它們的值來代替。 \ n是一個轉義序列,所以我認爲它不會被解釋。

4

在Perl中,單引號字符串不會擴展像\n\t的反斜槓轉義字符。你看到它們擴展的原因可能是由於你正在使用的shell的性質,它由於某種原因正在消耗你的輸出。

+0

他們也不會做可變插值(「foo是$ bar」) – amphetamachine 2010-01-08 18:32:15

3

您需要了解的有關引用和引用類運算符的所有內容都在perlop中。

要回答您的具體問題,雙引號可以將特定字符序列轉換爲其他字符。在您的示例中,雙引號將字符序列\n轉換爲表示換行符的單個字符。在單引號字符串中,相同的文字序列只是文字\n字符。

1

除了你的O'Reilly鏈接,一個比Larry Wall編寫的'Programming Perl'書籍權威性更強的參考文獻指出,反斜槓內插不會出現在單引號字符串中。

... much like Unix shell quotes: double quoted string literals are subject to 
backslash and variable interpolation; single quoted strings are not 
(except for \' and \\, so that you may ...) 

Programing Perl, 2nd ed, 1996 page 16 

所以這將是有趣的,看看你的Perl確實有
打印 '雙反斜線N:\\ N' 的東西;

如上所示,請向我們展示'perl -v'的輸出。

我相信我迷惑了論壇編輯器軟件,因爲最後一個Perl'print'應該縮進。

+0

如果我寫成print'\\ n';這會輸出'\ n' – Vijay 2010-01-09 06:14:23

1

如果使用雙引號,它將被解釋爲換行符。

但是,如果您使用單引號,它不會將\ n視爲換行符。

對我來說它工作正常。

文件內容

print "This string \n shows up on two lines."; 
print 'This string \n shows up on only one.' 
相關問題