#perlにおける配列要素数の取得
めっさめさ今更感が漂うけれど備忘録に投稿させていただきます.
##最後の要素番号を利用
@array=('anpan','syokupan','karepan');
という配列に対し,
$#arrayを参照することでこの配列の最後の要素番号(karepanの要素番号)を参照することが出来る.
つまり,この場合,要素数「2」が取得できる.(要素数は0からカウントされるから)
ということは,
$#array+1
で知りたい情報となる.
##配列自体をスカラー変数に代入
@array=('anpan','syokupan','karepan');
を
$length=@array;
と,スカラー変数に代入することで,簡単に配列の要素数を取得することができる.
逆に言うと,スカラー変数に代入してしまうと配列として扱うことはできない.
##配列リファレンスの要素数が知りたい
@array=('anpan','syokupan','karepan');
$refArray = \@array;
ここまでのお話は配列が対象だったが,配列リファレンスの場合はどのように参照するのか?
もちろん,上記二つのやり方は使えない.
ここではscalar関数を使ってやればいい.
scalar(@$refArray);
引数としてデリファレンスしたものを渡してあげれば,要素数を返してくれる.
というか,リストコンテキストをスカラーコンテキストに変換するという話なので,配列そのものを引数に指定することもできる.
配列リファレンスだとスカラー変数に代入しないと使いようがないため,scalar変数を使うしか方法がないという話でもある.