@array[0,2,6]
複数の値を持つ配列であることはわかっています。
$scalar=3
そして、私はそれが単一のスカラー値を持つ単一の変数であると信じていました。
しかし、何$array[3, 4]
ですか?2 つの値を持つスカラー変数ですか?
@array[0,2,6]
(またはより一般的に@array[ EXPR ]
)は配列スライスです。( perldataを参照してください) インデックス式はリスト コンテキストで評価され、返されるリストはインデックスのリストであると見なされ、それらのインデックスによって識別される要素がスライスによって返されます。
$array[ EXPR ]
は配列要素です。インデックス式はスカラー コンテキストで評価され、返された値がインデックスと見なされ、そのインデックスによって識別される要素が返されます。
コードはスカラー コンテキストで3,4
評価されます — perlopのコンマ演算子を参照してください—つまり、void コンテキスト警告以外は同じです。4
$array[3,4]
$array[4]
見てみてください:
perl -E '@ar = (10,11,12,42);say $ar[1,2,3]'
42
1,2,3はリストです。スカラーコンテキストでは、最後のメンバーを返します。