孤獨者 - 心在黑暗裡旅行 ...... ... 至尊會員
遊蕩的過客 - 枉入紅塵若許年 .. ... - UID
- 18273
- 帖子
- 12122
- 精華
- 1273
- 積分
- 240737
- 金幣
- 492641
- 威望
- 5001
- 推廣
- 0
- 閱讀權限
- 99
- 來自
- 尋覓中
- 註冊時間
- 2006-6-24
- 最後登錄
- 2015-5-27
|
36樓
大 中
小 發表於 2006-10-26 21:31
4.2.2 產生陣列
有了串列的預備知識之後,接著我們來看陣列如何產生?
Perl 的陣列,以 @ 加上變數名稱來表示,比如:@oklist,它的元素可由 index 索引逐一取得,第一個 index 值由 0 開始,最後一個 index 值由 $#oklist 來表示。陣列的第一個元素為 $oklist[0],第二個元素為 $oklist[1],第三個元素為 $oklist[2],其它依此類推,最後一個元素為 $oklist[$#oklist]引用:@oklist=(1, 2, 4, 6);
@oklist 陣列共有 4 個元素,分別是 $oklist[0], $oklist[1], $oklist[2], $oklist[3]
$#oklist 值為 3
最後一個元素可表示成 $oklist[$#oklist],其值為 6
@tiny=(); # 空陣列
#! /usr/bin/perl
@a=(2, 4, 6);
@b=(1, 3, 5);
@c=qw(a b c);
# 那麼:
@total=(@a, @b, @c); # 同於 (2, 4, 6, 1, 3, 5, "a", "b", "c");
# 可以把陣列一次印出來
print @total;
# 結果:246135abc 在上述範例中,我們把陣列一次印出來,可是所有元素全接在一起了,這有時並不是我們想要的,通常我們希望能在元素之間加入某些分隔符號,比如 "," 逗點,那麼如何做呢? join 這個函式可以幫我們做到這一點,示範如下:引用:#! /usr/bin/perl
@a=(2, 4, 6);
@b=(1, 3, 5);
@c=qw(a b c);
# 那麼:
@total=(@a, @b, @c); # 同於 (2, 4, 6, 1, 3, 5, "a", "b", "c");
$result = join ',' , @total;
print $result;
# 結果:2,4,6,1,3,5,a,b,c 上式中,join 函式的作用對象是陣列,語法是:join 表示式, 陣列
因為我們希望 @total 的元素用 "," 號分開,且把結果(是一個字串)放入 $result 中,因此,使用 join ',' , @total;
您可以任意變換您要分隔的符號。
再者,有時我們希望上述的過程可逆,也就是說:把 $result 還原成 @total (2,4,6,1,3,5,a,b,c 變成 246135abc),那麼要怎麼做呢? split 這個函式可以幫我們的忙:引用:#! /usr/bin/perl
$result="2,4,6,1,3,5,a,b,c";
@total = split(/,/, $result);
$i=0;
while ($i <= $#total) {
print '$total[' . $i . '] ===> ' . $total[$i] . "\n";
$i++;
}
# 輸出:
$total[0] ===> 2
$total[1] ===> 4
$total[2] ===> 6
$total[3] ===> 1
$total[4] ===> 3
$total[5] ===> 5
$total[6] ===> a
$total[7] ===> b
$total[8] ===> c 上式,在 split 中指明分隔符號為 ",",它可以把純量字串 "分割" 成為陣列,然後存放在 @total 中。
|