Perl 數組
Perl 數組一個是存儲標量值的列表變數,變數可以是不同類型。
數組變數以 @ 開頭。訪問數組元素使用 $ + 變數名稱 + [索引值] 格式來讀取,實例如下:
實例
程式中 $ 符號使用了 \ 來轉義,讓他原樣輸出。
執行以上程式,輸出結果為:
$hits[0] = 25 $hits[1] = 30 $hits[2] = 40 $names[0] = google $names[1] = zaixian $names[2] = taobao
創建數組
數組變數以 @ 符號開始,元素放在括弧內,也可以以 qw 開始定義數組。
@array = (1, 2, 'Hello'); @array = qw/這是 一個 數組/;
第二個數組使用 qw// 運算符,它返回字串列表,數組元素以空格分隔。當然也可以使用多行來定義數組:
@days = qw/google taobao ... zaixian/;
你也可以按索引來給數組賦值,如下所示:
$array[0] = 'Monday'; ... $array[6] = 'Sunday';
訪問數組元素
訪問數組元素使用 $ + 變數名稱 + [索引值] 格式來讀取,實例如下:
實例
執行以上程式,輸出結果為:
google taobao zaixian zaixian
數組索引值從 0 開始,即 0 為第一個元素,1 為第二個元素,以此類推。
負數從反向開始讀取,-1 為第一個元素, -2 為第二個元素
數組序列號
Perl 提供了可以按序列輸出的數組形式,格式為 起始值 + .. + 結束值,實例如下:
實例
執行以上程式,輸出結果為:
1 2 3 4 5 6 7 8 9 10 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h i j k l m n o p q r s t u v w x y z
數組大小
數組大小由數組中的標量上下文決定。:
@array = (1,2,3); print "數組大小: ",標量 @array,"\n";
數組長度返回的是數組物理大小,而不是元素的個數,我們可以看以下實例:
實例
執行以上程式,輸出結果為:
數組大小: 51 最大索引: 50
從輸出的結果可以看出,數組元素只有四個,但是數組大小為 51。
添加和刪除數組元素
Perl 提供了一些有用的函數來添加和刪除數組元素。
如果你之前沒有編程經驗,可能會問什麼是函數,其實我們之前使用的 print 即是一個輸出函數。
下表列出了數組中常用的操作函數:
序號 | 類型和描述 |
---|---|
1 | push @ARRAY, LIST
將列表的值放到數組的末尾 |
2 | pop @ARRAY
刪除數組的最後一個值 |
3 | shift @ARRAY
彈出數組第一個值,並返回它。數組的索引值也依次減一。 |
4 | unshift @ARRAY, LIST
將列表放在數組前面,並返回新數組的元素個數。 |
實例
執行以上程式,輸出結果為:
切割數組
我們可以切割一個數組,並返回切割後的新數組:
實例
執行以上程式,輸出結果為:
weibo qq facebook
數組索引需要指定有效的索引值,可以是正數後負數,每個索引值使用逗號隔開。
如果是連續的索引,可以使用 .. 來表示指定範圍:
實例
執行以上程式,輸出結果為:
weibo qq facebook
替換數組元素
Perl 中數組元素替換使用 splice() 函數,語法格式如下:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
參數說明:
- @ARRAY:要替換的數組。
- OFFSET:起始位置。
- LENGTH:替換的元素個數。
- LIST:替換元素列表。
以下實例從第6個元素開始替換數組中的5個元素:
實例
執行以上程式,輸出結果為:
替換前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 替換後 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20
將字串轉換為數組
Perl 中將字串轉換為數組使用 split() 函數,語法格式如下:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
參數說明:
- PATTERN:分隔符號,默認為空格。
- EXPR:指定字串數。
- LIMIT:如果指定該參數,則返回該數組的元素個數。
實例
執行以上程式,輸出結果為:
o com weibo
將數組轉換為字串
Perl 中將數組轉換為字串使用 join() 函數,語法格式如下:
join EXPR, LIST
參數說明:
- EXPR:連接符。
- LIST:列表或數組。
實例
執行以上程式,輸出結果為:
www-zaixian-com google,taobao,zaixian,weibo
數組排序
Perl 中數組排序使用 sort() 函數,語法格式如下:
sort [ SUBROUTINE ] LIST
參數說明:
- SUBROUTINE:指定規則。
- LIST:列表或數組。
實例
執行以上程式,輸出結果為:
排序前: google taobao zaixian facebook 排序後: facebook google zaixian taobao
注意:數組排序是根據 ASCII 數字值來排序。所以我們在對數組進行排序時最好先將每個元素轉換為小寫後再排序。
特殊變數: $[
特殊變數 $[ 表示數組的第一索引值,一般都為 0 ,如果我們將 $[ 設置為 1,則數組的第一個索引值即為 1,第二個為 2,以此類推。實例如下:
實例
執行以上程式,輸出結果為:
網站: google taobao zaixian facebook @sites[1]: google @sites[2]: taobao
一般情況我們不建議使用特殊變數 $[,在新版 Perl 中,該變數已廢棄。
合併數組
數組的元素是以逗號來分割,我們也可以使用逗號來合併數組,如下所示:
實例
執行以上程式,輸出結果為:
numbers = 1 3 4 5 6
也可以在數組中嵌入多個數組,並合併到主數組中:
實例
執行以上程式,輸出結果為:
numbers = 1 3 5 2 4 6
從列表中選擇元素
一個列表可以當作一個數組使用,在列表後指定索引值可以讀取指定的元素,如下所示:
實例
執行以上程式,輸出結果為:
var 的值為 = 1
同樣我們可以在數組中使用 .. 來讀取指定範圍的元素:
實例
執行以上程式,輸出結果為:
list 的值 = 4 3 2