Like Share Discussion Bookmark Smile

J.J. Huang   2021-03-05   Perl   瀏覽次數:

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
    2
    $chmod 0755 hello.pl
    $./hello.pl

    該執行將產生以下結果:

    1
    Hello, world

    你可以對函數參數使用括號,也可以根據自己的喜好忽略它們。僅偶爾需要它們來闡明優先級問題。以下兩個語句產生相同的結果。

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

腳本文件

可以在任何普通的簡單文本編輯器程序內部建立 Perl 腳本。每種類型的平台都有幾個可用的程序。有許多專為程序員設計的程序可從網上下載。

按照 Perl 約定,必須以 .pl 或 .PL 文件擴展名保存 Perl 文件,才能將其識別為功能良好的 Perl 腳本。文件名可以包含數字,符號和字母,但不能包含空格。在空格處使用下劃線(_)。

註解

任何編程語言中的註釋都是開發人員的朋友。註釋可用於使程序易於使用,並且解釋器僅會跳過註釋而不會影響程式碼功能。例如,在上面的程序中,以井號#開頭的行是註釋。

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

1
# This is a comment in perl

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

1
2
3
4
5
6
7
8
9
10
11
#!/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

這將產生以下結果:

1
Hello, world

Perl 中的空白

Perl程序不關心空格。

1
2
3
#!/usr/bin/perl

print "Hello, world\n";

但是,如果在帶引號的字符串中包含空格,則將按原樣打印它們。例如:

1
2
3
4
5
#!/usr/bin/perl

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

這將產生以下結果:

1
2
Hello
world

在引號之外使用所有類型的空格,例如空格,製表符,換行符等,對於解釋器都是等效的。僅包含空格的行(可能帶有註釋)被稱為空白行,Perl 完全忽略了它。

Perl中的單引號和雙引號

你可以在文字字符串周圍使用雙引號或單引號,如下所示:

1
2
3
4
#!/usr/bin/perl

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

這將產生以下結果:

1
2
Hello, world
Hello, world\n%

單引號和雙引號之間存在重要區別。僅雙引號插入變量和特殊字符(例如換行符\n),而單引號不插入任何變量或特殊字符。檢查下面的範例,其中我們使用 $a 作為變量來存儲值,然後打印該值-

1
2
3
4
5
#!/usr/bin/perl

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

這將產生以下結果:

1
2
Value of a = 10
Value of a = $a\n%

“Here”文件

Here文件又稱作 heredoc、hereis、here-字串或here-腳本,是一種在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序語言(像Perl、PHP、Python和Ruby)裡定義一個字串的方法。

使用概述:

  1. 必須後接分號,否則編譯通不過。
  2. END可以用任意其它字符代替,只需保證結束標識與開始標識一致。
  3. 結束標識必須頂格獨自佔一行(即必須從行首開始,前後不能銜接任何空白和字符)。
  4. 開始標識可以不帶引號號或帶單雙引號,不帶引號與帶雙引號效果一致,解釋內嵌的變量和轉義符號,帶單引號則不解釋內嵌的變量和轉義符號。
  5. 當內容需要內嵌引號(單引號或雙引號)時,不需要加轉義符,本身對單雙引號轉義,此處相當與q和qq的用法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/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";

這將產生以下結果:

1
2
3
4
5
6
7
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 使用反斜線(\)字符轉義可能干擾我們程式碼的任何類型的字符。讓我們舉一個例子,我們要打印雙引號和 $ 符號:

1
2
3
4
5
#!/usr/bin/perl

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

這將產生以下結果:

1
2
This is "number"
$result

Perl 標識符

Perl 標識符是用戶編程時使用的名字,在程序中使用的變量名,常量名,函數名,語句塊名等統稱為標識符。

  • 標識符組成單元:英文字母(a~z,A~Z),數字(0~9)和下劃線(_)。
  • 標識符由英文字母或下劃線開頭。
  • 標識符區分大小寫,$morosedog 與 $MoroseDog 表示兩個不同變量。

註:以上參考了
Tutorialspoint, Perl - Syntax Overview