Perlで同名の$aaa[0]と@aaa[0]は別物か?
$aaa[0]は、配列変数@aaaのゼロ番目の要素の値と同じ物です。
では、@aaa[0]は、何かというと『($aaa[0])』にイコールで、@aaaのゼロ番目の要素を指定するスライスです。
ということで、$aaa[0]と@aaa[0]は、ほぼ同じ物なのですが、でも別物です。
あくまでも、$aaa[0]はスカラー変数で、@aaa[0]は配列変数なのです。
以下にその同じと違いを示します。
@array = ("11111", "22222", "3333"); #同じケース $a = @array[1]; $b = $array[1]; print "\$a=$a \$b=$b \n"; # $a=2222 $b=2222 が表示される。 #違うケース @array[1] = ("aaa", "bbb", "ccc"); print "\@array[1]=@array[1] \n"; # @array[1]=aaa が表示される。(リストコンテキストでのスライスがミソ)。 # @array[1]は、スライスの($array[1])とイコールで、上記は以下と同じなのです。 ($array[1]) = ("aaa", "bbb", "ccc"); #よって、一番目の"aaa"が格納されます。 #ちなみに、スライスとは、配列の複数(単数含む)の要素にアクセスすること。 $array[1] = ("aaa", "bbb", "ccc"); print "\$array[1]=$array[1] \n"; # $array[1]=ccc が表示される(スカラーコンテキストでのカンマ演算子がミソ)。 #カンマ演算子は左から右に評価していき、最後に残った"ccc"が格納されます。