サブルーチンに複数のリストを渡す
back
通常リスト(や配列やハッシュ)をサブルーチンに渡すと、@_ で一括されてしまう。
--------------------------------
@array = (1,2,3);
%hash = ("key1"=>"val1", "key2"=>"val2");
&function(@array, %hash);
sub function {
my (@array, %hash) = @_;
foreach (@array) {
print "$_\n";
}
print "---\n";
foreach (keys %hash) {
print "$_: $hash{$_}\n";
}
print "--\nend\n";
}
--------------------------------
[結果]
1
2
3
key2
val2
key1
val1
---
--
end
ここで、リファレンスを使う
--------------------------------
@array = (1,2,3);
%hash = ("key1"=>"val1", "key2"=>"val2");
&function(\@array, \%hash);
sub function {
my $array = shift;
my $hash = shift;
foreach (@$array) {
print "$_\n";
}
print "---\n";
foreach (keys %$hash) {
print "$_: $hash->{$_}\n";
}
print "--\nend\n";
}
----------------
[結果]
1
2
3
---
key2: val2
key1: val1
--
end
back