Perl - 第二章 | Perl 語法概述
Perl 借鑒了許多語言的語法和概念: awk、sed、C、Bourne Shell、Smalltalk、Lisp 甚至是英語。但是,兩種語言之間存在一定的區別。
Perl 程序由一系列聲明和語句組成,從頂部到底部。循環,子例程和其他控制結構使你可以在程式碼內跳轉。每個簡單的語句必須以分號(;)結尾。
Perl 是一種自由格式的語言,你可以按自己的喜好格式化和縮進它。空格主要用於分隔令牌,這與諸如 Python 這樣的語法是重要的部分或不重要的 Fortran 這樣的語言不同。
第一個 perl
互動模式編程
你可以在命令行中將 Perl 解釋器與 -e 選項一起使用,從而可以從命令行執行 Perl 語句。讓我們在 $ 提示符下嘗試以下操作:1
perl -e 'print "Hello World\n"'
該執行將產生以下結果:
1
Hello, world
腳本模式編程
假設你已經在 $ 提示符下,讓我們使用 vi 或 vim 編輯器打開文本文件 hello.pl,並將以下行放入文件中。1
2
3
4#!/usr/bin/perl
# This will print "Hello, World"
print "Hello, world\n";這裡的/usr/bin/perl的是實際的Perl解釋器的二進制文件。
在執行腳本之前,請確保更改腳本文件的模式並賦予執行特權,通常將 0755 設置完美地起作用,最後你可以如下執行上述腳本:1
2chmod 0755 hello.pl
./hello.pl該執行將產生以下結果:
1
Hello, world
你可以對函數參數使用括號,也可以根據自己的喜好忽略它們。僅偶爾需要它們來闡明優先級問題。以下兩個語句產生相同的結果。
1
2print("Hello, world\n");
print "Hello, world\n";
腳本文件
可以在任何普通的簡單文本編輯器程序內部建立 Perl 腳本。每種類型的平台都有幾個可用的程序。有許多專為程序員設計的程序可從網上下載。
按照 Perl 約定,必須以 .pl 或 .PL 文件擴展名保存 Perl 文件,才能將其識別為功能良好的 Perl 腳本。文件名可以包含數字,符號和字母,但不能包含空格。在空格處使用下劃線(_)。
註解
任何編程語言中的註釋都是開發人員的朋友。註釋可用於使程序易於使用,並且解釋器僅會跳過註釋而不會影響程式碼功能。例如,在上面的程序中,以井號#開頭的行是註釋。
簡單地說,Perl 中的註釋以井號符號開始,一直到行尾:
1 | # This is a comment in perl |
以=開頭的行被解釋為嵌入式文件(pod)一節的開始,編譯器將忽略直到下一個= cut的所有後續行。以下是範例:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | Hello, world |
Perl 中的空白
Perl程序不關心空格。
1 | #!/usr/bin/perl |
但是,如果在帶引號的字符串中包含空格,則將按原樣打印它們。例如:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | Hello |
在引號之外使用所有類型的空格,例如空格,製表符,換行符等,對於解釋器都是等效的。僅包含空格的行(可能帶有註釋)被稱為空白行,Perl 完全忽略了它。
Perl中的單引號和雙引號
你可以在文字字符串周圍使用雙引號或單引號,如下所示:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | Hello, world |
單引號和雙引號之間存在重要區別。僅雙引號插入變量和特殊字符(例如換行符\n),而單引號不插入任何變量或特殊字符。檢查下面的範例,其中我們使用 $a 作為變量來存儲值,然後打印該值-
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | Value of a = 10 |
“Here”文件
Here文件又稱作 heredoc、hereis、here-字串或here-腳本,是一種在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序語言(像Perl、PHP、Python和Ruby)裡定義一個字串的方法。
使用概述:
- 必須後接分號,否則編譯通不過。
- END可以用任意其它字符代替,只需保證結束標識與開始標識一致。
- 結束標識必須頂格獨自佔一行(即必須從行首開始,前後不能銜接任何空白和字符)。
- 開始標識可以不帶引號號或帶單雙引號,不帶引號與帶雙引號效果一致,解釋內嵌的變量和轉義符號,帶單引號則不解釋內嵌的變量和轉義符號。
- 當內容需要內嵌引號(單引號或雙引號)時,不需要加轉義符,本身對單雙引號轉義,此處相當與q和qq的用法。
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | This is the syntax for here document and it will continue |
轉義字符
Perl 使用反斜線(\)字符轉義可能干擾我們程式碼的任何類型的字符。讓我們舉一個例子,我們要打印雙引號和 $ 符號:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | This is "number" |
Perl 標識符
Perl 標識符是用戶編程時使用的名字,在程序中使用的變量名,常量名,函數名,語句塊名等統稱為標識符。
- 標識符組成單元:英文字母(a~z,A~Z),數字(0~9)和下劃線(_)。
- 標識符由英文字母或下劃線開頭。
- 標識符區分大小寫,$morosedog 與 $MoroseDog 表示兩個不同變量。