4

私は2つのハッシュを持っています。

my %hash1 = (
          '1.3.6.1.2.1.7.1.0' => 'switch_stuff1',
          '1.3.6.1.2.1.6.3.0' => 'switch_stuff4',
          '1.3.6.1.2.1.6.5.0' => 'switch_stuff5',
          '1.3.6.1.2.1.7.4.0' => 'switch_stuff2',
          '1.3.6.1.2.1.6.2.0' => 'switch_stuff3'
    );

my %hash2 = (
          '1.3.6.1.2.1.7.1.0' => 125858,
          '1.3.6.1.2.1.6.3.0' => 120000,
          '1.3.6.1.2.1.6.5.0' => 23766,
          '1.3.6.1.2.1.7.4.0' => 115336,
          '1.3.6.1.2.1.6.2.0' => 200
     );

ご覧のとおり、両方のハッシュのキー値は同じです。

私がする必要があるのは、から%hash1を取得し、それらを のキーとして使用すること%hash2です。

出力:

$VAR1 = {
          'switch_stuff1' => 125858,
          'switch_stuff4' => 120000,
          'switch_stuff5' => 23766,
          'switch_stuff2' => 115336,
          'switch_stuff3' => 200
        };

注:両方のハッシュのキーと値のペアの数は常に同じです。

あるいは、私にとって唯一重要なこと%hash1は価値観です。

'switch_stuff1',
'switch_stuff4',
'switch_stuff5',
'switch_stuff2',
'switch_stuff3'

したがって、説明した方法でハッシュをマージできない場合は、代わりに%hash1、値のみを含む配列に変換できます。

誰か Perl の初心者を助けてくれませんか、少なくとも私を正しい方向に向けてくれませんか? どんな助けでも大歓迎です。

ありがとうございました。

4

2 に答える 2

11

到着予定時刻:

ああ、私はあなたを誤解していると思います.. 2 つの別々の値をハッシュに結合したかったのです。で簡単にできますmap

my %hash3 = map { $hash1{$_} => $hash2{$_} } keys %hash1;
于 2012-04-16T21:05:07.393 に答える
5
my $hash1 = {
          '1.3.6.1.2.1.7.1.0' => 'switch_stuff1',
          '1.3.6.1.2.1.6.3.0' => 'switch_stuff4',
          '1.3.6.1.2.1.6.5.0' => 'switch_stuff5',
          '1.3.6.1.2.1.7.4.0' => 'switch_stuff2',
          '1.3.6.1.2.1.6.2.0' => 'switch_stuff3'
};

my $hash2 = {
          '1.3.6.1.2.1.7.1.0' => 125858,
          '1.3.6.1.2.1.6.3.0' => 120000,
          '1.3.6.1.2.1.6.5.0' => 23766,
          '1.3.6.1.2.1.7.4.0' => 115336,
          '1.3.6.1.2.1.6.2.0' => 200
};  

my $hash3 = {}:

foreach $key (keys %$hash1) {
   $hash3->{$hash1->{$key}} = $hash2->{$key};
}
于 2012-04-16T21:06:09.533 に答える