gonokokkus: Net::SNMP Hash reverse

Hallo!

Vielleicht kennt sich jemand von euch mit dem Perl Modul Net::SNMP aus und kann mir bei meinem Problem weiterhelfen.

Ich führe über Net::SNMP einen snmpwalk durch
$result = $sesion->get_table($oid);
Das Resultat wird als Hash gespeichert.
Ich möchte jetzt aber nicht über die jeweilige OID als Schlüssel auf den Inhalt zugreifen sondern über die Werte!
Also möchte ich den Hash drehen (reverse) um aus den Schlüsseln Werte zu machen und umgekehrt.

Leider funktioniert das mit dem Hash nicht.
Kennt sich da vielleicht jemand aus und kann mir weiterhelfen.

Vielen Dank

Gruß
david.

  1. Das Resultat wird als Hash gespeichert.
    Ich möchte jetzt aber nicht über die jeweilige OID als Schlüssel auf den Inhalt zugreifen sondern über die Werte!

    Das geht nicht.

    Also möchte ich den Hash drehen (reverse) um aus den Schlüsseln Werte zu machen und umgekehrt.

    Es gibt values %hash, nur nützt dir das nicht.

    Wenn die Werte eindeutig sind kannst du dir einen neuen Hash bauen:

      
    #!/usr/bin/perl -w  
    use strict;  
    use Data::Dumper;  
      
    my %alt = qw(1 w1 2 w2 3 w3);  
    my %new = map { $alt{$_} => $_} keys %alt;  
    print Dumper \%new, \%alt;  
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)
  2. Hell-O!

    Ich führe über Net::SNMP einen snmpwalk durch
    [...]
    Kennt sich da vielleicht jemand aus und kann mir weiterhelfen.

    Ich kenne mich da zwar mit dem Modul nicht aus, aber in Beispiel 3 wird der Ergebnishash per Hand zusammengebaut, das sollte doch ausbaufähig sein. Ansonsten erklärt perlref, wie man Referenzen nutzen kann:

    # Erzeugen der Hash-Referenz  
    my $hash_ref = { Apfel => "Rot",  
                     Birne => "Gelb",  
                     Pflaume => "Blau"  
                   };  
    # leerer Ziel-Hash  
    my %new_hash;  
    # Tauschen von Schlüssel und Wert  
    while ( my($key, $value) = each %$hash_ref) {  
      $new_hash{$value} = $key;  
    }  
    # Testausgabe  
    print "Content-type: Text/plain\n\n";  
    while ( my($key, $value) = each %new_hash) {  
      print "\$new_hash{$key} ist $value\n";  
    }
    

    Ergibt:
    $new_hash{Rot} ist Apfel
    $new_hash{Gelb} ist Birne
    $new_hash{Blau} ist Pflaume

    Siechfred

    --
    Hier könnte Ihre Werbung stehen.
    Das Steuer-Blog | Siechfreds Tagebuch