4.2.1 串列

串列是小括號()內,由一串純量組成(0 個元素以上),彼此以逗點分開。比如:

(1, 2, 3, 4) 這是有 4 個數值元素的串列

("John", 5, 6, "ijk", 7) 這是 5 個元素,字串及數值純量混合的串列。

若元素是連續的,可以使用 "範圍算符" .. 來表示區間。

(1..1000) 表示 1 到 1000 所組成的串列。

(5..10)

(5.1..10.7) 同上,它會把小數去掉。

(1, 3, 5..8, 9, 10) 同 (1, 3, 5, 6, 7, 8, 9, 10)

("Mmm", "NNN", "Jjj", "Kkk", "Xxx")

串列也可以是空的:

() 空串列


變動形的串列:

$l=10;
$t=20;

($l, $t) 此串列的大小由 $l, $t 決定

像 ("Mmm", "NNN", "Jjj", "Kkk", "Xxx") 這種串列要鍵入那麼多雙引號,挺累人的,您也可以用 qw 算符來簡化它(別忘了 Perl 是懶惰程式設計師的最愛):

("Mmm", "NNN", "Jjj", "Kkk", "Xxx")

同於

qw( Mmm NNN Jjj Kkk Xxx )

換言之,qw 是將串列元素加上引號(quoted words,因此簡稱為 qw),並且以空白分隔。除此之外,您也不一定要用小括號,您可用任何符號做為起始及結束符號:

qw/ Mmm NNN Jjj Kkk Xxx /

qw! Mmm NNN Jjj Kkk Xxx !

qw# Mmm NNN Jjj Kkk Xxx #

qw{ Mmm NNN Jjj Kkk Xxx }

qw< Mmm NNN Jjj Kkk Xxx >

qw[ Mmm NNN Jjj Kkk Xxx ]

以上均同於:("Mmm", "NNN", "Jjj", "Kkk", "Xxx")

串列可用來快速交換變數內容,不需要中間暫存變數:

傳統交換變數內容之作法如下:

# 把 $a 先放入 暫存變數 $tmp 中
$tmp = $a;

# 把 $b 放入 $a 中
$a = $b;

# 把 $a 值放入 $b 中
$b = $tmp;


但使用串列,就不必再用中間暫存變數了! 如下所示:

# 以下將 $a、$b 兩變數內容交換
($a, $b) = ($b, $a);


# 以下將 $b 給 $a,$c 給 $b,$a 給 $c,形成輪動的效果
($a, $b, $c) = ($b, $c, $a);