Net::SNMP Hash reverse
gonokokkus
- perl
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.
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.
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