サブルーチンから複数のリストを返す
back
複数のリストを返すリストで、普通に複数の配列やハッシュで受けても、最初の
一つの配列に全て格納されてしまう。
--------------------------------
(@array, %hash) = &func;
foreach (@array) {
print $_, "\n";
}
print "----\n";
foreach (keys %hash) {
print $_, ": ", $hash{$_}, "\n";
}
print "--\n";
print "end\n";
sub func {
my @array = (1,2,3);
my %hash = ("key1" => "val1", "key2" => "val2", "key3" => "val3");
return (@array, %hash);
}
--------------------------------
[結果]
1
2
3
key2
val2
key1
val1
key3
val3
----
--
end
ここで、やっぱりリファレンスを使う
--------------------------------
($array, $hash) = &func;
foreach (@$array) {
print $_, "\n";
}
print "----\n";
foreach (keys %$hash) {
print $_, ": ", $hash->{$_},"\n";
}
print "--\n";
print "end\n";
sub func {
my @array = (1,2,3);
my %hash = ("key1" => "val1", "key2" => "val2", "key3" => "val3");
return (\@array, \%hash);
}
----------------
[結果]
1
2
3
----
key2: val2
key1: val1
key3: val3
--
end
back