配列の添字
配列の添字に正の数と0以外を設定した場合の挙動を調べてみました。
- 負の値を添字に指定すると、添字の中で最大のものを-1に割り当てて、絶対値が大きくなるに連れて配列を逆向き(末尾から先頭)に見ていきます。
例、
要素数3である@fredを使用。
$fred[-1] = $fred[2]
$fred[-2] = $fred[1]
$fred[-3] = $fred[0]
- 添字の中にアンスコ(_)を書くとアンスコは無視されます。
例、$fred[1_2]は$fred[12]。
上記を確かめるために利用したスクリプトはこちら。
実際はuse strict;を指定してmyとか付けたほうが良いと思います。
#!/usr/bin/perl -w $fred[0] = "yabba"; $fred[1] = "dabba"; $fred[2] = "doo"; $length = @fred; print "Array is\n"; for ( $i = 0; $i < $length; $i++ ) { print $fred[$i] . "\n"; } print "\n"; print "\$fred[-1] is\n"; print $fred[-1] . "\n\n"; print "\$fred[-2] is\n"; print $fred[-2] . "\n\n"; print "\$fred[-3.456] = \$fred[-3] is\n"; print $fred[-3.456] . "\n\n"; print "\$fred[1_2] = \$fred[12] is\n"; print $fred[1_2] . "\n";
実行結果
$ perl list.pl Array is yabba dabba doo $fred[-1] is doo $fred[-2] is dabba $fred[-3.456] = $fred[-3] is yabba $fred[1_2] = $fred[12] is Use of uninitialized value $fred[12] in concatenation (.) or string at list.pl line 27. $
おまけ
そもそもリストと配列の違いって普段あまり意識しないのですが
(と言いますか私は≒だと思ってました…)
リストは順序付けされたデータのこと。
配列はそのデータ=リストを格納する変数。
と定義されています。