1.2.4 複雜資料結構
$wife = ("leah", "rachel", "bilhah", "zilpah"); # 錯誤
$wife = ["leah", "rachel", "bilhah", "zilpah"]; # 正確
用 中括弧來將乙個列表轉換成乙個標量。
$wife[0] = ["leah", "rachel", "bilhah", "zilpah"]; #正確
$wife = ["leah", "rachel", "bilhah", "zilpah"]; #錯誤
左邊要寫成 $wife 或 $wife[0] 表明 wife 是乙個陣列或雜湊,只有對陣列或雜湊才能這樣賦值。
訪問方式用 $wife[0] 或 $wife[0][0]
我們希望將雜湊結構也當成乙個標量,我們可以使用花括弧來完成,如:
$kids_of_wife = ;
訪問 $kids_of_wife[0] = "reuben";
1.2.5 簡單資料結構
perl 用 package 標名命名空間,如
package camel;
$fido = &fetch();
$fido 的真實名字是 $camel::fido,&fetch 的真實名字是 &camel::fetch
當我們使用:
$fido = new camel "amelia";
我們實際上呼叫了 camel 包中的 &new,它的全名是 &camel::new。並且當我們使用:
$fido->saddle();
的時候,我們呼叫了 &camel::saddle 過程,因為 $fido 記得它是指向乙個 camel 物件的。這就是乙個物件導向程式的工作方法。
package camel 實際上是開始了乙個新包。perl 中用 use 宣告借用其他已有包的名詞和動詞,use 同時也會檢查磁碟上載入的模組名稱。
實際上,你必須先使用:
use camel;
然後才能使用:
$fido = new camel "amelia";
不然的話,perl 將不知道 camel 是什麼東西。
可能 perl 最強大的東西並不在 perl 本身,而在於 cpan(comprehensive perl archive network),cpan 包含無數的用於實現不同任務模組
use some::cool::module;
然後你就可以使用模組中的動詞。
use strict;
strict 模組幹的事是更加嚴格地約束 perl 中的一些規則,這樣你在很多方面必須更明確,而不是讓 perl 去猜,例如如何確定變數的作用範
圍。1.2.6 動詞
在 perl 中過程和函式並沒有硬性的區別。我們經常稱動詞為操作符(內建)或者是子過程(使用者自定義)(注:歷史上,perl 要求你在呼叫
的任何使用者定義子過程的前面加乙個與號(&)(參閱早先時候的 $fido = &fetch();)。但是到了 perl 版本 5,這個與號是可選的了,所以
使用者定義動詞現在可以和內建動詞相同的方法進行呼叫了($fido = fetch();)。
1.3.1 如何執行
1) %perl -e 'print "hello, world!/n";' # unix 下
%perl -e "print 'hello, world!'"; # win 下
2) %perl gradation #gradation 檔案中寫了 perl 指令碼
3) %gradation #gradation 前加了 #! /usr/bin/perl (#!」shebang」標誌),並且該檔案可執行
windows 下的 .pl 指令碼如果關聯了 perl.exe 直譯器,不用加 shebang 標誌,要加的話就是 #!c:/perl/bin/perl.exe,就直接能執行 gradation.pl
#! /usr/bin/perl -w # -w 選項會開啟所有有用的和有趣的警告資訊
perl語言入門總結 第3章 列表與陣列
1 列表list指的是標題的有序集合,而陣列 array 則是儲存列表的變數。更精確地說,列表指的是資料,而陣列指的是變數。訪問陣列中的元素 fred 0 yabba fred 1 dabba fred 2 doo number 2.71111 print fred number 1 dabba 如...
perl語言入門總結 第2章
what steak print fred ate n s.n 布林值如果是數字0為假,如果是空字串 為假,如果即不是數字也不是字串,那就先轉成數字或字串再行判斷。字串 0 也為假 獲取使用者輸入 line 去除最右邊換行 text a line n chomp text print text un...
總結 Perl技巧
1.perl超時機制eval sub alarm 10 my startcmdresult qx tmpcmd alarm 0 if timeout 2.忽略sigchld訊號,避免產生殭屍程序 sig ignore 3.等待 sub show flower print r local 0 4.pe...