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 中。