1

パラメータとしてハッシュ参照を取得するサブルーチンがあります。

参照によって単一のハッシュ値を操作できます。参照が指しているハッシュ全体を置き換えて、このハッシュが参照されていたすべての場所で変更が表示されるようにします。

sub replace{
    my $hashref = shift;

    # can manipulate hash here
    $hashref->{key} = "newValue";

    # how to replace replace the hash here by a new hash
    $newHashRef = {
        key  => "value",
        key2 => "value2",
    };
}

それは可能ですか?

4

3 に答える 3

1
%$hashref = (
    key => "value",
    key2 => "value2",
);

%$hashrefは「$hashref参照するハッシュ」を示し、そのハッシュに割り当てると、参照が含まれていない場合と同様に、その内容が置き換えられます。

于 2012-10-17T20:35:38.700 に答える
1

逆参照されたハッシュに割り当てるだけです:

my $hashref = shift;
%$hashref = ();
于 2012-10-17T20:36:11.090 に答える
1

参照されたハッシュの内容を置き換えるには:

sub replace{
    my $hashref = shift;
    %$hashref = ( key1 => "value1", key2 => "value2" );
}

(%hashハッシュ用の場合は、略し%{ $hashref }てハッシュ参照用です。)%$hashref

参照自体を置き換えるには:

sub replace{
    $_[0] = { key1 => "value1", key2 => "value2" };
}
于 2012-10-17T20:36:18.423 に答える