Как получить доступ к информации в хэш-ссылке, которая была передана в подпрограмму? - PullRequest
0 голосов
/ 29 июля 2011

Я пытаюсь использовать хеш-ссылки для передачи информации в подпрограммы. Код Псуэдо:

sub output_detail {
    Here I want to be able to access each record by the key name (ex. "first", "second", etc)
}

sub output_records {
    I want to use a foreach to pass each record has reference to another sub-routine
    that handles each record.

    foreach $key ( sort( keys %someting) ) {
        output_detail(something);
    }
}

%records = ();

while ($recnum, $first, $second, $third) = db_read($handle)) {
    my %rec = ("first"=>$first, "second"=>$second, "third=>$third);
    my $id = $recnum;
    $records{$id} = \%rec;
}

output_records(\%records);

Я не уверен, как отменить ссылку на хэши при передаче в подпрограмму. Любые идеи будут очень полезны.

Спасибо

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Используйте -> для доступа к ключам хеш-кода.Таким образом, ваш аргумент для output_records будет представлен в виде скалярного хэша ref.

sub output_records {
    my $records = shift;
    my $first = $records->{"first"};
}

См. perlreftut для получения дополнительной информации.

0 голосов
/ 29 июля 2011
sub output_detail {
    my $hash = shift;
    my $value = $$hash{some_key};
}

sub output_records {
    my $hash = shift;

    foreach my $key (sort keys %$hash) {
        output_detail($hash, $key);  
        # or just pass `$$hash{$key}` if you only need the value
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...