読者です 読者をやめる 読者になる 読者になる

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

Perl

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"; }
}