配列のリファレンスをサブルーチンに渡す

Perlで配列をルーチン間でやりとりする時のメモです。

サブルーチンに引数として配列を渡すとき、配列をそのまま渡せばスカラーに展開されて値渡しされますが、リファレンス演算子をつけてリファレンスとして渡せば参照渡しとなります。(多分)

 

呼び出し先でリファレンスの実体にアクセスするにはどうすればいいのかというと、アロー演算子を使えばよいのですが、配列の大きさを求めるときに少しハマったので書き方を残しておきます。(...フレーズでくくるだけです)

$#{$array_ref}

foreach使えばいいじゃんと言ってしまえばそれまでですがw

 

my @array = ("sanzo", "goku", "gojo", "hakkai");
&printArray(\@array);
sub printArray { my ($array_ref) = @_; for (my $i = 0; $#{$array_ref} >= $i; ++$i) { print "$i: $array_ref->[$i]\n"; }
}