perl 複数の配列や多次元配列をサブルーチンの引数にする場合

Perlでは正確には二次元配列は利用できない。
サブルーチンの引数は@_の単なる配列にまとめられちゃうので、
複数の配列や多次元配列を渡す時は参照渡しにする。

以下は、
123456abc
と出力したいわけだが、
hoge1ではうまくいかない。

#---------------------------------------------------------------
@array1 = (
[1,2,3],
[4,5,6],
);
@array2 = ('a','b','c');
#---------------------------------------------------------------
&hoge1(@array1,@array2);
sub hoge1 {
my @hoge1 = shift;
my @hoge2 = shift;

foreach $var1 (@hoge1) {
foreach $var1_2 (@{$var1}) {
print $var1_2;
}
}
foreach $var2 (@hoge2) {
print $var2;
}

}
#---------------------------------------------------------------
&hoge2(\@array1,\@array2);
sub hoge2 {
my $hoge1 = shift;
my $hoge2 = shift;

#デリファレンス
my @hoge1 = @{$hoge1};
my @hoge2 = @{$hoge2};

foreach $var1 (@hoge1) {
foreach $var1_2 (@{$var1}) {
print $var1_2;
}
}
foreach $var2 (@hoge2) {
print $var2;
}
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA