リストと配列
Perlでは、リストと配列の概念が似ていてつい混同してしまいます。
リストとは、単にデータに順序を付けて並べたものです。
配列とは、その並べたデータを配列変数に格納したものです。
例えば、以下は、リストを配列変数に格納しています。
@aaa = (10, 20, 30);
つぎに、10をスカラー変数に格納するには、以下ようになります。
$aaa = (10, 20, 30)[0];
なんと、リストだと思っていたものが、配列として処理ができるのです。
これは、
$aaa = @aaa[0];
と全く同じです。
しかし、shift関数を使って10を求める時は、両者は異なるのです。
$aaa = shift(10, 20, 30); $aaa = shift(@aaa);
前者はエラーになるのです。
どうしてもリストで処理をしたい場合には、
$aaa = shift @{[10, 20, 30]};
とします。
つまり、無名配列のリファレンスのデリファレンスをshiftするのです。
これは、厳密にはリストでなかったかもです。
ということで、リストと配列の違いわかりましたか?