Я знаю, что это должно быть легко доступно для поиска в 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».