7

私はまだハッシュの逆参照を整理しようとしています。私の現在の問題は、ハッシュリファレンスをサブに渡していることであり、そのサブ内でそれを逆参照したいと考えています。しかし、それを行うための正しい方法/構文が見つかりません。サブ内で、ハッシュ キーを繰り返し処理したいのですが、ハッシュ参照の構文はハッシュと同じではありません。

だから私がしたいのはこれを行うことです:

sub foo {
    %parms = @_;
    foreach $keys (key %parms) { # do something };
}

ただし、ハッシュの代わりに hashref が渡されます。

4

5 に答える 5

3

現時点では実際にコードをテストしていませんが、フリーハンドで作成すると、次のようなことができます。

sub foo {
    $parms = shift;
    foreach my $key (keys %$parms) { # do something };
}
于 2010-02-17T17:40:36.263 に答える
2

サブに渡されたハッシュ参照を逆参照する1つの方法は次のとおりです。

use warnings;
use strict;

my %pars = (a=>1, b=>2);
foo(\%pars);
sub foo {
    my ($href) = @_;
    foreach my $keys (keys %{$href}) { print "$keys\n" }
}

__END__
a
b

参考資料クイックリファレンスおよびperlreftutも参照してください。

于 2010-02-17T17:44:09.463 に答える
2

sub foo
{
    my $params = $_[0];
    my %hash = %$params;
        foreach $keys (keys %hash)
        {
         print $keys;
        }
}

my $hash_ref = {name => 'Becky', age => 23};

foo($hash_ref);

また、参照についての良いイントロはここにあります。

于 2010-02-17T17:45:40.673 に答える
1
#!/usr/bin/perl
use strict;

my %params = (
    date => '2010-02-17',
    time => '1610',
);

foo(\%params);

sub foo {
    my ($params) = @_;
    foreach my $key (keys %$params) {
        # Do something
        print "KEY: $key VALUE: $params{$key}\n";
    };
}
于 2010-02-18T00:12:21.110 に答える