Perl 基礎(chǔ)語(yǔ)法

Perl借用了C、sed、awk、shell腳本以及很多其他編程語(yǔ)言的特性,語(yǔ)法與這些語(yǔ)言有些類(lèi)似,也有自己的特點(diǎn)。

Perl 程序有聲明與語(yǔ)句組成,程序自上而下執(zhí)行,包含了循環(huán),條件控制,每個(gè)語(yǔ)句以分號(hào) (;) 結(jié)束。

Perl 語(yǔ)言沒(méi)有嚴(yán)格的格式規(guī)范,你可以根據(jù)自己喜歡的風(fēng)格來(lái)縮進(jìn)。


第一個(gè) perl 程序

交互式編程

你可以在命令行中使用 -e 選項(xiàng)來(lái)輸入語(yǔ)句來(lái)執(zhí)行代碼,實(shí)例如下:

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

輸入以上命令,回車(chē)后,輸出結(jié)果為:

Hello World

腳本式編程

我們將以下代碼放到 hello.pl 文件中:

#!/usr/bin/perl

# 輸出 "Hello, World"
print "Hello, world\n";

代碼中 /usr/bin/perl 是 perl 解釋器的路徑。在執(zhí)行該腳本前要先確保文件有可執(zhí)行權(quán)限,我們可以先將文件權(quán)限修改為 0755 :

$ chmod 0755 hello.pl 
$ ./hello.pl 
Hello, world                   # 輸出結(jié)果

print 也可以使用括號(hào)來(lái)輸出字符串,以下兩個(gè)語(yǔ)句輸出相同的結(jié)果:

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

腳本文件

perl 代碼可以寫(xiě)在一個(gè)文本文件中,以 .pl、.PL 作為后綴。

文件名可以包含數(shù)字,符號(hào)和字母,但不能包含空格,可以使用下劃線(_)來(lái)替代空格。

一個(gè)簡(jiǎn)單的Perl 文件名:

w3c_school.pl

注釋

使用注釋使你的程序易讀,這是好的編程習(xí)慣。

perl 注釋的方法為在語(yǔ)句的開(kāi)頭用字符#,如:

# 這一行是 perl 中的注釋

perl 也支持多行注釋?zhuān)畛S玫姆椒ㄊ鞘褂?POD(Plain Old Documentations) 來(lái)進(jìn)行多行注釋。方法如下:

#!/usr/bin/perl

# 這是一個(gè)單行注釋
print "Hello, world\n";

=pdo 注釋
這是一個(gè)多行注釋
這是一個(gè)多行注釋
這是一個(gè)多行注釋
這是一個(gè)多行注釋
=cut

執(zhí)行以上程序,輸出結(jié)果為:

Hello, world

注意:

  • =pod、 =cut只能在行首。
  • 以=開(kāi)頭,以=cut結(jié)尾。
  • =后面要緊接一個(gè)字符,=cut后面可以不用。

Perl 中的空白

Perl 解釋器不會(huì)關(guān)心有多少個(gè)空白,以下程序也能正常運(yùn)行:

#!/usr/bin/perl

print       "Hello, world\n";

執(zhí)行以上程序,輸出結(jié)果為:

Hello, world

但是如果空格和分行出現(xiàn)在字符串內(nèi),他會(huì)原樣輸出:

#!/usr/bin/perl

# 會(huì)輸出分行
print "Hello
          world\n";

執(zhí)行以上程序,輸出結(jié)果為:

Hello
          world

所有類(lèi)型的空白如:空格,tab ,空行等如果在引號(hào)外解釋器會(huì)忽略它,如果在引號(hào)內(nèi)會(huì)原樣輸出。


單引號(hào)和雙引號(hào)

perl 輸出字符串可以使用單引號(hào)和雙引號(hào),如下所示:

#!/usr/bin/perl

print "Hello, world\n";    # 雙引號(hào)
print 'Hello, world\n';    # 單引號(hào)

輸出結(jié)果如下:

Hello, world
Hello, world\n

從結(jié)果中我們可以看出,雙引號(hào) \n 輸出了換行,而單引號(hào)沒(méi)有。

Perl雙引號(hào)和單引號(hào)的區(qū)別: 雙引號(hào)可以正常解析一些轉(zhuǎn)義字符與變量,而單引號(hào)無(wú)法解析會(huì)原樣輸出。

#!/usr/bin/perl

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

輸出結(jié)果如下:

a = 10
a = $a\n

Here 文檔

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

使用概述:

  • 1.必須后接分號(hào),否則編譯通不過(guò)。
  • 2.END可以用任意其它字符代替,只需保證結(jié)束標(biāo)識(shí)與開(kāi)始標(biāo)識(shí)一致。
  • 3.結(jié)束標(biāo)識(shí)必須頂格獨(dú)自占一行(即必須從行首開(kāi)始,前后不能銜接任何空白和字符)。
  • 4.開(kāi)始標(biāo)識(shí)可以不帶引號(hào)號(hào)或帶單雙引號(hào),不帶引號(hào)與帶雙引號(hào)效果一致,解釋內(nèi)嵌的變量和轉(zhuǎn)義符號(hào),帶單引號(hào)則不解釋內(nèi)嵌的變量和轉(zhuǎn)義符號(hào)。
  • 5.當(dāng)內(nèi)容需要內(nèi)嵌引號(hào)(單引號(hào)或雙引號(hào))時(shí),不需要加轉(zhuǎn)義符,本身對(duì)單雙引號(hào)轉(zhuǎn)義,此處相當(dāng)與q和qq的用法。
#!/usr/bin/perl

$a = 10;
$var = <<"EOF";
這是一個(gè) Here 文檔實(shí)例,使用雙引號(hào)。
可以在這輸如字符串和變量。
例如:a = $a
EOF
print "$var\n";

$var = <<'EOF';
這是一個(gè) Here 文檔實(shí)例,使用單引號(hào)。
例如:a = $a
EOF
print "$var\n";

執(zhí)行以上程序輸出結(jié)果為:

這是一個(gè) Here 文檔實(shí)例,使用雙引號(hào)。
可以在這輸如字符串和變量。
例如:a = 10

這是一個(gè) Here 文檔實(shí)例,使用單引號(hào)。
例如:a = $a

轉(zhuǎn)義字符

如果我們需要輸出一個(gè)特殊的字符,可以使用反斜線(\)來(lái)轉(zhuǎn)義,例如輸出美元符號(hào)($):

#!/usr/bin/perl

$result = "W3Cschool教程 \"w3cschool\"";
print "$result\n";
print "\$result\n";

執(zhí)行以上程序輸出結(jié)果為:

TIM截圖20170922182624


Perl 標(biāo)識(shí)符

Perl 標(biāo)識(shí)符是用戶(hù)編程時(shí)使用的名字,在程序中使用的變量名,常量名,函數(shù)名,語(yǔ)句塊名等統(tǒng)稱(chēng)為標(biāo)識(shí)符。

  • 標(biāo)識(shí)符組成單元:英文字母(a~z,A~Z),數(shù)字(0~9)和下劃線(_)。
  • 標(biāo)識(shí)符由英文字母或下劃線開(kāi)頭。
  • 標(biāo)識(shí)符區(qū)分大小寫(xiě),$w3cschool 與 $W3cschool 表示兩個(gè)不同變量。