Allerdings... so "richtig" nützlich ist der Befehl meiner Meinung nach nicht, da aus dem Value ja nicht auf den Key geschlossen werden kann, und meist braucht man ja beide Werte, also key und value. Vorsicht: Meinung des Verfassers, jeder darf natürlich auch 'ne andere Meinung vertreten...
Kommentare zum Beitrag "values() - Alle Werte eines Hashes ermitteln"
Kommentar von Renee Bäcker
Es kommt immer auf die Aufgabenstellung an. Wenn die Frage lautet "Gibt es eine gelbe Frucht in dem Hash?" und der Hash sieht so aus:
for my $key( keys %hash ){
if( $hash{$key} eq 'gelb' ){
print "gelbe Frucht vorhanden!";
}
}
Gruß,
Renée
Kommentar von Admin
Für diesen Fall ist dies natürlich richtig. Wenn man also wirklich nur wissen will, ob 'gelb' vorhanden ist, geht das ganz gut mit values(). Da man aber meist wissen will, was denn nun gelb ist, verwende ich eben meist keys() und schließe daraus darauf, was gelb ist.
Kommentar von Renee Bäcker
Wie ich ja gesagt habe: "Es kommt auf die Fragestellung an".
Du hast natürlich Recht, dass in den meisten Fällen "keys" (oder auch "each") gebraucht wird.
Kommentar von Max Hentschel
Guten Tach,
also ich habe dein oberes Beispiel folgendermaßen angewendet:
my %hash;
$hash{elfe1}="RNI_IN_ELFK_".$datum."_070049";
$hash{elfe2}="RNI_IN_ELFP_".$datum."_070049";
$hash{elmo1}="RNI_IN_ELMK_".$datum."_070049";
$hash{elmo2}="RNI_IN_ELMP_".$datum."_070049";
$hash{eva}="RNI_IN_EVA_".$datum."_070049";
$hash{evm}="RNI_IN_EVM_".$datum."_070049";
foreach (values %hash){
print "\n".$_."\n";}
Bei mir kommt dabei dann aber nur der Wert vom letzten Key raus. Mir wird also ausgegeben:
RNI_IN_EVM_20080331_070049
Hab ich da irgendwo was nich gerafft???
Kommentar von Max
Erledigt, Abbruchbedingung meiner Vorhergehenden while-Schleife und der if-else Anweisung :-|
thx anyway
Kommentar von Admin
... wollt ich gerade schreiben, daß bei mir das alles funktioniert.