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