に参照することによりハッシュを渡すために、私は、これはperlのの些細な使用はもちろんのこと、Googleで簡単に検索する必要があります知っているが、私は私が見つけた、彼らのこれまでのところ何も与えない多くのソリューションを試してみました予想される行動。基本的に、私は次のようなコードを経由して、サブルーチンを呼び出すことサブルーチンからハッシュへの参照を返す、別のサブルーチンにそのハッシュへの参照を渡すと、そのハッシュの内容を印刷しようとしている:どのようにperlの
#!/usr/bin/perl
my $foo = make_foo();
foreach $key (sort keys %$foo) {
print "2 $key $$foo{$key}\n";
}
print_foo(\%foo);
sub print_foo
{
my %loc = ???;
foreach $key (sort keys %loc}) {
print "3 $key $loc{$key}\n";
}
}
sub make_foo
{
my %ret;
$ret{"a"} = "apple";
foreach $key (sort keys %ret) {
print "1 $key $ret{$key}\n";
}
return \%ret;
}
誰かが私にハッシュの余分なコピーを作成せずに(サブルーチンを経由して)これを行うための最善の方法を教えてください。私が試した解決策では、 "3"で始まる行は表示されませんでした。
私はあなたのコードの先頭に 'use strict'を使用することを強くお勧めします。 'my'を使って変数を宣言するために' foreach'行を変更する必要がありますが、単純な入力ミスをデバッグする多くの頭痛を軽減します。よりよい '%と書かれた – zostay