Perl入門之道:執(zhí)行最常見(jiàn)的編程任務(wù)
Perl是一種非常簡(jiǎn)單、應(yīng)用廣泛且反響很好的腳本語(yǔ)言。它可用于各種任務(wù)(例如,您可以使用它創(chuàng)建DOS批處理文件或C外殼腳本的等效文件),但在網(wǎng)絡(luò)開發(fā)環(huán)境中,它用于開發(fā)CGI腳本。
51CTO推薦閱讀:Perl 6完成處子秀 ***個(gè)可用版本正式發(fā)布
由于Perl是一種腳本語(yǔ)言,所以使用它的一個(gè)好處就是可以分發(fā)程序的源代碼。這就為您提供了學(xué)習(xí)Perl的機(jī)會(huì),您也可以下載和修改數(shù)千個(gè)Perl腳本,以供自己使用。Perl的缺點(diǎn)之一就是,多數(shù)的免費(fèi)代碼都難以理解。這使Perl自身成了一種神秘的語(yǔ)言類型!
本文假定您已經(jīng)知道如何編程(如果您了解C語(yǔ)言,這對(duì)您將非常簡(jiǎn)單)。一旦掌握了有關(guān)Perl的基礎(chǔ)知識(shí),使用起來(lái)就會(huì)非常簡(jiǎn)單。在本文中,我們將首先介紹如何使用Perl執(zhí)行最常見(jiàn)的編程任務(wù)。閱讀本文后,您將可以相對(duì)輕松地編寫自己的Perl腳本,還可以輕松地讀取其他人編寫的含義模糊的腳本,這將是一個(gè)好的開始。
要啟用Perl,您需要有Perl解釋程序。在任何裝有UNIX的計(jì)算機(jī)上,99.99%的都已安裝了Perl解釋程序。在裝有Windows或Mac計(jì)算機(jī)上,您需要下載***的語(yǔ)言版本并將其安裝到計(jì)算機(jī)上。您可從網(wǎng)上輕松下載Perl,并且是免費(fèi)的。
接下來(lái),請(qǐng)確保查看Perl附帶的DOCS目錄,其中會(huì)有類似用戶手冊(cè)的資料。如果您已加載了Perl,請(qǐng)確保已正確設(shè)置了路徑以包含Perl的可執(zhí)行文件。然后,打開文本編輯器并創(chuàng)建一個(gè)文本文件。在文件中,輸入以下行:
- print "Hello World!n";
將文件命名為“test1.pl”。在命令提示符下鍵入:
- perl test1.plPerl
將運(yùn)行并執(zhí)行文本文件中的代碼。您應(yīng)該會(huì)看到詞語(yǔ)“Hello World!”打印到標(biāo)準(zhǔn)輸出中。正如您所看到的,在Perl中創(chuàng)建和運(yùn)行程序都非常簡(jiǎn)單。(如果使用的是UNIX,您可以在***行中輸入一段注釋,如#!/usr/bin/perl,那么以后您就不需要在命令行鍵入單詞“perl”了。)
print命令會(huì)將內(nèi)容打印到標(biāo)準(zhǔn)輸出中。符號(hào)n是換行符。如果您將測(cè)試程序修改成以下形式會(huì)更清楚(#表示一段注釋):
- # Print on two lines
- print "HellonWorld!n";
請(qǐng)注意,打印命令知道它應(yīng)該將“n”解釋為換行符而不是文字字符這并不是由于打印命令擁有智能,而是因?yàn)槭褂昧穗p引號(hào)(在Perl中實(shí)際稱為引用)。如果您用單引號(hào)代替雙引號(hào),例如:
- print 'HellonWorld!n';
則不會(huì)對(duì)字符n進(jìn)行解釋,而是用文字代替。
還有反引號(hào)字符:`。一對(duì)反引號(hào)表示引號(hào)內(nèi)的字符應(yīng)被識(shí)別為一個(gè)操作系統(tǒng)命令,并且該命令與您輸入的命令一并執(zhí)行。如果您試圖將操作系統(tǒng)的命令行操作置于反引號(hào)內(nèi),則將執(zhí)行該命令。例如,在Windows NT系統(tǒng)中,您可以使用:
- print 'cmd /c dir';
#p#
來(lái)運(yùn)行DIR命令,并可以從當(dāng)前目錄中查看文件列表。Perl語(yǔ)言中的變量非常有趣。Perl變量無(wú)需聲明,用$來(lái)指明即可。例如:
- $s = "HellonWorldn";
- $t = 'HellonWorldn';
- print $s, "n", $t;
或:
- $i = 5;
- $j = $i + 5;
- print $i, "t", $i + 1, "t", $j; # t = tab
或:
- $a = "Hello ";
- $b = "Worldn";
- $c = $a .$b; # note use of . to concat strings
- print $c;
由于.表示字符串連接,因此可以估計(jì).= 與 C 語(yǔ)言中的“+=”具有相同的含義。所以,你可以寫成:
- $a = "Hello ";
- $b = "Worldn";
- $a .= $b;print $a;
還可以創(chuàng)建數(shù)組:
- @a = ('cat', 'dog', 'eel');
- print @a, "n";
- print $#a, "n"; # The value of the highest index, zero basedprint $a[0], "n";
- print $a[0], $a[1], $a[2], "n";
符號(hào)$#表示獲得數(shù)組中的***索引,它等于數(shù)組中元素的編號(hào)減1。像在C語(yǔ)言中一樣,所有數(shù)組的索引都是從零開始的。您也可以創(chuàng)建散列:
- %h = ('dog', 'bark', 'cat', 'meow', 'eel', 'zap');
- print "The dog says ", $h{'dog'};
該散列中,單詞'bark'和'dog'相關(guān)聯(lián),'meow'和'cat'相關(guān)聯(lián),等等。這個(gè)散列還可以表達(dá)的更具藝術(shù)性:
- %h = (
- dog => 'bark',
- cat => 'meow',
- eel => 'zap'
- );
運(yùn)算符=>引用左邊的字符串,相當(dāng)于一個(gè)逗號(hào)。您可以像在C語(yǔ)言中一樣創(chuàng)建一個(gè)簡(jiǎn)單的for循環(huán)語(yǔ)句:
- for ($i = 0; $i < 10; $i++)
- {
- print $i, "n";
- }
While語(yǔ)句很簡(jiǎn)單:
- $i = 0;
- while ( $i < 10 ) {
- print $i, "n"; $i++;
- }
If語(yǔ)句同樣也很簡(jiǎn)單:
- for ($i = 0; $i < 10; $i++)
- {
- if ($i != 5) {
- print $i, "n";
- }
- }
布爾運(yùn)算符的作用與C語(yǔ)言中的相同:
- && 表示“和”
- || 表示“或”
- ! 表示“非”
對(duì)于數(shù)字:
- == 表示“等于”
- != 表示“不等于”
- <、<=、> 和 >=(與原意相同)
#p#
其他:
- eq
- ne
- lt
- le
- gt
- ge
如果有一個(gè)數(shù)組,則您可以使用foreach語(yǔ)句輕松進(jìn)行循環(huán):
- @a = ('dog', 'cat', 'eel');
- foreach $b (@a)
- {
- print $b, "n";
- }
Foreach語(yǔ)句可以獲取@a數(shù)組中的每個(gè)元素,并將該元素置于$b中,直到@a循環(huán)結(jié)束。使用單詞sub可以創(chuàng)建一個(gè)例行程序。將所有變量傳遞到例行程序中一個(gè)稱為_的數(shù)組。因此,需要運(yùn)行以下代碼:
- show ('cat', 'dog', 'eel');
- sub show
- {
- for ($i = 0; $i <= $#_; $i++)
- {
- print $_[$i], "n";
- }
- }
請(qǐng)注意,$#將返回?cái)?shù)組的***索引號(hào)(元素的編號(hào)減1),所以$#_表示參數(shù)的編號(hào)減1。如果您喜歡這種運(yùn)算,那么也會(huì)愛(ài)上Perl語(yǔ)言。您可以使用單詞local聲明例行程序中的局部變量,例如:
- sub xxx{local ($a, $b, $c)...}
還可以使用&調(diào)用某個(gè)Perl函數(shù),例如:
- &show ('a', 'b', 'c');
只有在出現(xiàn)歧義時(shí)才需要使用&符號(hào),但也有一些編程人員一直都使用該符號(hào)。要從例行程序中返回一個(gè)值,需要使用關(guān)鍵詞return。 從STDIN中讀取數(shù)據(jù)要從標(biāo)準(zhǔn)輸入(stdin)中讀取數(shù)據(jù),需要使用STDIN來(lái)處理。例如:
- print "Enter high number:";
- $i = ;
- for ($j = 0; $j <= $i; $j++)
- {
- print $j, "n";
- }
只要輸入一個(gè)整數(shù),該程序就將會(huì)正常運(yùn)行。 每次讀取一行數(shù)據(jù)。您還可以使用getc讀取一個(gè)字符,例如:
- $i = getc(STDIN);
或使用read語(yǔ)句:
- read(STDIN, $i, 1);
read命令的第三個(gè)參數(shù)中的1是要讀取的輸入數(shù)據(jù)的長(zhǎng)度。
讀取環(huán)境變量
您可以使用PERL定義一個(gè)名為ENV的全局散列,它可用來(lái)檢索環(huán)境變量的值。例如:
- print $ENV{'PATH'};
讀取命令行參數(shù)
您可以使用PERL定義一個(gè)全局?jǐn)?shù)組ARGV,其中包含所有傳遞給腳本的命令行參數(shù)。$#ARGV是傳遞的自變量的編號(hào)減1,$ARGV[0]是***個(gè)被傳遞的自變量,$ARGV[1]是第二個(gè)被傳遞的自變量,依此類推。
作者:Marshall Brain
原文鏈接:http://computer.bowenwang.com.cn/perl.htm
【編輯推薦】
- 常用Perl命令行參數(shù)應(yīng)用分析
- Perl多進(jìn)程及其和多線程的關(guān)系解析
- Perl函數(shù)參數(shù)中傳遞數(shù)組和引用的使用
- Perl語(yǔ)言中三大概念解析
- 專家推薦 Perl函數(shù)手冊(cè)之入門篇