複数の配列、変数、ハッシュをサブルーチンに送る最良の方法は何ですか?配列、スカラー、ハッシュをPerlのサブルーチンに渡す
シンプルなフォーム、動作します。
my $msg = &getMsg(1,2,3);
print $msg;
sub getMsg {
my($a, $b, $c) = @_;
}
私は、このバージョンの難しさを持って、私は何をしたいのかされていないグローバルを使用せずにサブルーチンに安全にデータを送信するかどうかはわからないのです。配列であること - - アップ読まれます@a
があるため
my (@a, $s, %h) = @_;
動作しません、:あなたがしようとした割り当てがあること
getMsg(\@array, \%hash, $scalar);
sub getMsg {
my ($aref, $href, $foo) = @_;
for my $elem (@$aref) {
...
}
}
注:あなたが参照を使用することができます
my @array = ('a','b','c');
my $str = "Hello";
my %hash = (
'a' => ['100','nuts'],
'b' => ['200','bolts'],
'c' => ['300','screws'],
);
my $msg = getMsg(@array, $str, %hash);
print $msg;
sub getMsg {
my (@a, $s, %h) = @_;
my $MSG;
foreach my $x (@a) {
$MSG .= "\n$str, $x your hash value = $h{$x}[0] $h{$x}[1]";
}
return $MSG
}
サブ '$ MSG。=" \ n $ str、$ xあなたのハッシュ値= $ h - > {$ x} - > [0] $ h- > {$ x} - > [1] "; ' – BarneySchmale