配列
配列とはリストを保持する変数のこと。
配列全体は、@配列名、として表す。
@nums = (1..100); @chars = qw/ a b c d e /;
配列はリストの要素にはならない。
配列名は、その配列が持っているリストに置きかえられる
@chars qw/ b c /; @list = ('a', @chars, 'd'); # ('a', 'b', 'c', 'd')と同じ
配列の要素にアクセスする
配列やリストの要素は、0から始まり1ずつ増加する整数によって
添え字付けされている。
配列の各要素にアクセスするには、その添え字を使う。
print $list[0]; $list[4] = "hoge";
配列の各要素を表す場合は、@でなく、$をつける。
$listと$list[0]は完全に別物なので、同じプログラムで、
$listというスカラー変数を使うことも可能。
ただし、ややこしいので、止めた方がいい。
添え字には式を使うこともできる。
$list[3 * 5] = "hoge"; $n = 5; $list[$n - 2] = 100;
添え字に小数を使った場合は、切り捨てで整数に変換される。
$list[4.6] = "hoge"; # これと $list[4] = "hoge"; # これは同じ
配列の末尾より後ろにある要素に値を代入すると、配列は
自動的に拡張される。
@list (1..10); # @listの要素数は10 $list[20] = 20; # @listの要素数は21
添え字は0から始まるので、末尾の要素の添え字が20なら、
要素数は21になる。
また、途中の要素にはundefが代入される。
配列の特別なインデクス
インデクスとは添え字のこと。
配列の末尾の要素のインデクスは、$#配列名か-1で表される。
@list = (1..10); print $list[9]; # 3つのprint文は全て等価 print $list[$#list]; print $list[-1]; # これが一番楽
-2は真ん中の、-3は最初の要素のインデクスを表すが、
誰も使わないらしい。
参考書にそう書いてあったのですが、コメント欄で間違いを
指摘されたので確認。
#!/usr/bin/perl -w @list qw/ a b c d e /; print "$list[-2]\n"; print "$list[-3]\n";
d c
H.I.さんの仰るとおり、-2は後ろから2番目の、-3は後ろから
3番目の要素のインデクスです。
本に書いてあることを鵜呑みにしてはいけないですね。
次からは、実際にプログラムを動かして確認するようにします。