Perl語言入門教程
引言
Perl是一種非常簡單、應用廣泛且反響很好的腳本語言。它可用于各種任務(例如,您可以使用它創建DOS批處理文件或C外殼腳本的等效文件),但在網絡開發環境中,它用于開發CGI腳本。
由于Perl是一種腳本語言,所以使用它的一個好處就是可以分發程序的源代碼。這就為您提供了學習Perl的機會,您也可以下載和修改數千個Perl腳本,以供自己使用。Perl的缺點之一就是,多數的免費代碼都難以理解。這使Perl自身成了一種神秘的語言類型!
本文假定您已經知道如何編程(如果您了解C編程語言,這對您將非常簡單)。一旦掌握了有關Perl的基礎知識,使用起來就會非常簡單。在本文中,我們將首先介紹如何使用Perl執行最常見的編程任務。閱讀本文后,您將可以相對輕松地編寫自己的Perl腳本,還可以輕松地讀取其他人編寫的含義模糊的腳本,這將是一個好的開始。
Perl語言入門指南
要啟用Perl,您需要有Perl解釋程序。在任何裝有UNIX的計算機上,99.99%的都已安裝了Perl解釋程序。在裝有Windows或Mac計算機上,您需要下載最新的語言版本并將其安裝到計算機上。您可從網上輕松下載Perl,并且是免費的。
接下來,請確保查看Perl附帶的DOCS目錄,其中會有類似用戶手冊的資料。從某種意義上說,讀完所有文檔,或只是先瀏覽一下都會很有幫助。最初會覺得很麻煩,但在讀完本文后,您將獲得更多的認識。
輸出字符“Hello World”
如果您已加載了Perl,請確保已正確設置了路徑以包含Perl的可執行文件。然后,打開文本編輯器并創建一個文本文件。在文件中,輸入以下行:
print "Hello World!n";
將文件命名為“test1.pl”。在命令提示符下鍵入:
perl test1.pl
Perl將運行并執行文本文件中的代碼。您應該會看到詞語“Hello World!”打印到標準輸出中。正如您所看到的,在Perl中創建和運行程序都非常簡單。(如果使用的是UNIX,您可以在第一行中輸入一段注釋,如#!/usr/bin/perl,那么以后您就不需要在命令行鍵入單詞“perl”了。)
print命令會將內容打印到標準輸出中。符號n是換行符。如果您將測試程序修改成以下形式會更清楚(#表示一段注釋):
# Print on two lines
print "HellonWorld!n";
請注意,打印命令知道它應該將“n”解釋為換行符而不是文字字符這并不是由于打印命令擁有智能,而是因為使用了雙引號(在Perl中實際稱為引用)。如果您用單引號代替雙引號,例如:
print 'HellonWorld!n';
則不會對字符n進行解釋,而是用文字代替。
還有反引號字符:`。一對反引號表示引號內的字符應被識別為一個操作系統命令,并且該命令與您輸入的命令一并執行。如果您試圖將操作系統的命令行操作置于反引號內,則將執行該命令。例如,在Windows NT系統中,您可以使用:
print `cmd /c dir`;
來運行DIR命令,并可以從當前目錄中查看文件列表。
PERL注釋
在Windows NT系統中,您不能輸入:
print `dir`;因為dir不是一個獨立的可執行命令——它是命令解釋程序cmd的一部分。有關詳細信息,請在DOS提示符后鍵入cmd /?。
符/用于引用正則表達式。
打印命令會將逗號解釋為分隔符。例如:
print 'hello', "n", 'world!';
句號也起分隔符作用:
print 'hello'. "n".'world!';
句號實際上是字符串連接分隔符。
還會有用于C語言體系的運算符printf。
Perl變量
Perl語言中的變量非常有趣。Perl變量無需聲明,用$來指明即可。例如:
$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;
由于 . 表示字符串連接,因此可以估計 .= 與 C 語言中的“+=”具有相同的含義。所以,你可以寫成:
$a = "Hello ";
$b = "Worldn";
$a .= $b;
print $a;
還可以創建數組:
@a = ('cat', 'dog', 'eel');
print @a, "n";
print $#a, "n"; # The value of the highest index, zero based
print $a[0], "n";
print $a[0], $a[1], $a[2], "n";
符號$#表示獲得數組中的最高索引,它等于數組中元素的編號減1。像在C語言中一樣,所有數組的索引都是從零開始的。
您也可以創建散列:
%h = ('dog', 'bark', 'cat', 'meow', 'eel', 'zap');
print "The dog says ", $h{'dog'};
該散列中,單詞'bark'和'dog'相關聯,'meow'和'cat'相關聯,等等。這個散列還可以表達的更具藝術性:
%h = (
dog => 'bark',
cat => 'meow',
eel => 'zap'
);
運算符=>引用左邊的字符串,相當于一個逗號。
循環語句和If語句
您可以像在C語言中一樣創建一個簡單的for循環語句:
for ($i = 0; $i < 10; $i++)
{
print $i, "n";
}
Perl注釋
即使是單行語句,也必須使用左右大括號,即{和}。
While語句很簡單:
$i = 0;
while ( $i < 10 )
{
print $i, "n";
$i++;
}If語句同樣也很簡單:
for ($i = 0; $i < 10; $i++)
{
if ($i != 5)
{
print $i, "n";
}
}布爾運算符的作用與C語言中的相同:
- && 表示“和”
- || 表示“或”
- ! 表示“非”
- 對于數字:
- == 表示“等于”
- != 表示“不等于”
- <、<=、> 和 >=(與原意相同)
- 其他:
- eq
- ne
- lt
- le
- gt
- ge
如果有一個數組,則您可以使用foreach語句輕松進行循環:
@a = ('dog', 'cat', 'eel');
foreach $b (@a)
{
print $b, "n";
}
Foreach語句可以獲取@a數組中的每個元素,并將該元素置于$b中,直到@a循環結束。
Perl函數
使用單詞sub可以創建一個例行程序。將所有變量傳遞到例行程序中一個稱為_的數組。因此,需要運行以下代碼:
show ('cat', 'dog', 'eel');
sub show
{
for ($i = 0; $i <= $#_; $i++)
{
print $_[$i], "n";
}
}
請注意,$#將返回數組的最高索引號(元素的編號減1),所以$#_表示參數的編號減1。如果您喜歡這種運算,那么也會愛上PERL語言。
您可以使用單詞local聲明例行程序中的局部變量,例如:
sub xxx
{
local ($a, $b, $c)
...
}
還可以使用&調用某個Perl函數,例如:
&show ('a', 'b', 'c');
只有在出現歧義時才需要使用&符號,但也有一些編程人員一直都使用該符號。
要從例行程序中返回一個值,需要使用關鍵詞return。
Perl讀取
從STDIN中讀取數據
要從標準輸入(stdin)中讀取數據,需要使用STDIN來處理。例如:
print "Enter high number:";
$i =
for ($j = 0; $j <= $i; $j++)
{
print $j, "n";
}
只要輸入一個整數,該程序就將會正常運行。
$i = getc(STDIN);
或使用read語句:
read(STDIN, $i, 1);
read命令的第三個參數中的1是要讀取的輸入數據的長度。
讀取環境變量
您可以使用PERL定義一個名為ENV的全局散列,它可用來檢索環境變量的值。例如:
print $ENV{'PATH'};
PERL注釋
環境變量的名稱必須使用大寫字母。
讀取命令行參數
您可以使用PERL定義一個全局數組ARGV,其中包含所有傳遞給腳本的命令行參數。$#ARGV是傳遞的自變量的編號減1,$ARGV[0]是第一個被傳遞的自變量,$ARGV[1]是第二個被傳遞的自變量,依此類推。
現在,您應該能夠閱讀或編寫簡單的Perl腳本了。如果您樂于閱讀整篇文檔,會學到更多知識。有關其他信息,請查看下一頁上的鏈接。
評論
查看更多