Perl - 語法概述



Perl 借鑑了許多語言的語法和概念:awk、sed、C、Bourne Shell、Smalltalk、Lisp 甚至英語。但是,這些語言之間也存在一些明顯的差異。本章旨在幫助您快速瞭解 Perl 中預期的語法。

Perl 程式由一系列宣告和語句組成,這些語句從上到下執行。迴圈、子程式和其他控制結構允許您在程式碼中跳轉。每個簡單語句都必須以分號 (;) 結尾。

Perl 是一種自由格式語言:您可以根據自己的喜好格式化和縮排它。與 Python 等語言(其中空格是語法的重要組成部分)或 Fortran 等語言(其中空格無關緊要)不同,空格主要用於分隔標記。

第一個 Perl 程式

互動模式程式設計

您可以在命令列使用 Perl 直譯器與 -e 選項,這使您可以從命令列執行 Perl 語句。讓我們在 $ 提示符下嘗試以下操作:

$perl -e 'print "Hello World\n"'

此執行將產生以下結果:

Hello, world

指令碼模式程式設計

假設您已經在 $ 提示符下,讓我們使用 vi 或 vim 編輯器開啟一個文字檔案 hello.pl,並將以下行放入您的檔案中。

#!/usr/bin/perl

# This will print "Hello, World"
print "Hello, world\n";

這裡 /usr/bin/perl 實際上是 perl 直譯器二進位制檔案。在執行指令碼之前,請確保更改指令碼檔案的模式並授予執行許可權,通常設定為 0755 即可,最後您按如下方式執行上述指令碼:

$chmod 0755 hello.pl
$./hello.pl

此執行將產生以下結果:

Hello, world

您可以根據個人喜好為函式引數使用括號或省略它們。只有在偶爾需要澄清優先順序問題時才需要它們。以下兩個語句產生相同的結果。

print("Hello, world\n");
print "Hello, world\n";

Perl 副檔名

Perl 指令碼可以在任何普通的簡單文字編輯器程式中建立。每種型別的平臺都有多種程式可用。網路上可以下載許多為程式設計師設計的程式。

根據 Perl 約定,Perl 檔案必須以 .pl 或 .PL 副檔名儲存,才能被識別為有效的 Perl 指令碼。檔名可以包含數字、符號和字母,但不能包含空格。在空格處使用下劃線 (_) 。

Perl 中的註釋

任何程式語言中的註釋都是開發人員的朋友。註釋可用於使程式使用者友好,並且直譯器會簡單地跳過它們,而不會影響程式碼功能。例如,在上面的程式中,以井號 # 開頭的行是註釋。

簡單地說,Perl 中的註釋以井號開頭,一直延續到行尾:

# This is a comment in perl

以 = 開頭的行被解釋為嵌入式文件 (pod) 部分的開始,所有後續行直到下一個 =cut 都被編譯器忽略。以下是示例:

#!/usr/bin/perl

# This is a single line comment
print "Hello, world\n";

=begin comment
This is all part of multiline comment.
You can use as many lines as you like
These comments will be ignored by the 
compiler until the next =cut is encountered.
=cut

這將產生以下結果:

Hello, world

Perl 中的空格

Perl 程式不關心空格。以下程式可以正常工作:

#!/usr/bin/perl

print       "Hello, world\n";

但是,如果空格位於引號字串中,則會按原樣列印。例如:

#!/usr/bin/perl

# This would print with a line break in the middle
print "Hello
          world\n";

這將產生以下結果:

Hello
          world

當在引號外部使用時,所有型別的空格(如空格、製表符、換行符等)對於直譯器來說都是等效的。僅包含空格(可能還有註釋)的行稱為空行,Perl 完全忽略它。

Perl 中的單引號和雙引號

您可以使用雙引號或單引號括起文字字串,如下所示:

#!/usr/bin/perl

print "Hello, world\n";
print 'Hello, world\n';

這將產生以下結果:

Hello, world
Hello, world\n$

單引號和雙引號之間存在重要區別。只有雙引號內插變數和特殊字元(如換行符 \n),而單引號不內插任何變數或特殊字元。檢視下面的示例,我們使用 $a 作為變數儲存一個值,然後列印該值:

#!/usr/bin/perl

$a = 10;
print "Value of a = $a\n";
print 'Value of a = $a\n';

這將產生以下結果:

Value of a = 10
Value of a = $a\n$

“Here” 文件

您可以非常方便地儲存或列印多行文字。您甚至可以在“here”文件中使用變數。下面是一個簡單的語法,請仔細檢查,在 << 和識別符號之間不能有空格。

識別符號可以是裸詞或一些帶引號的文字,就像我們在下面使用的 EOF 一樣。如果識別符號是帶引號的,則您使用的引號型別決定了“here”文件中文字的處理方式,就像在常規引號中一樣。未加引號的識別符號就像雙引號一樣。

#!/usr/bin/perl

$a = 10;
$var = <<"EOF";
This is the syntax for here document and it will continue
until it encounters a EOF in the first line.
This is case of double quote so variable value will be 
interpolated. For example value of a = $a
EOF
print "$var\n";

$var = <<'EOF';
This is case of single quote so variable value will be 
interpolated. For example value of a = $a
EOF
print "$var\n";

這將產生以下結果:

This is the syntax for here document and it will continue
until it encounters a EOF in the first line.
This is case of double quote so variable value will be
interpolated. For example value of a = 10

This is case of single quote so variable value will be
interpolated. For example value of a = $a

跳脫字元

Perl 使用反斜槓 (\) 字元來轉義任何可能干擾我們程式碼的字元型別。讓我們舉一個我們想要列印雙引號和 $ 符號的例子:

#!/usr/bin/perl

$result = "This is \"number\"";
print "$result\n";
print "\$result\n";

這將產生以下結果:

This is "number"
$result

Perl 識別符號

Perl 識別符號是用於識別變數、函式、類、模組或其他物件的名稱。Perl 變數名以 $、@ 或 % 開頭,後跟零個或多個字母、下劃線和數字 (0 到 9)。

Perl 不允許在識別符號中使用 @、$ 和 % 等標點符號。Perl 是一種區分大小寫的程式語言。因此,$Manpower$manpower 在 Perl 中是兩個不同的識別符號。

廣告

© . All rights reserved.