- Perl 基礎
- Perl - 首頁
- Perl - 簡介
- Perl - 環境
- Perl - 語法概述
- Perl - 資料型別
- Perl - 變數
- Perl - 標量
- Perl - 陣列
- Perl - 雜湊
- Perl - IF...ELSE
- Perl - 迴圈
- Perl - 運算子
- Perl - 日期和時間
- Perl - 子程式
- Perl - 引用
- Perl - 格式
- Perl - 檔案 I/O
- Perl - 目錄
- Perl - 錯誤處理
- Perl - 特殊變數
- Perl - 編碼規範
- Perl - 正則表示式
- Perl - 傳送電子郵件
- Perl 高階
- Perl - 套接字程式設計
- Perl - 面向物件
- Perl - 資料庫訪問
- Perl - CGI 程式設計
- Perl - 包和模組
- Perl - 程序管理
- Perl - 嵌入式文件
- Perl - 函式引用
- Perl 有用資源
- Perl - 問題和解答
- Perl - 快速指南
- Perl - 有用資源
- Perl - 討論
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 中是兩個不同的識別符號。