Calocybe: Hash

Beitrag lesen

Hi Danny!

was spricht gegen
if ( $hash{$schluessel} == $wert }
? ( == gegebenenfalls durch eq ersetzen )

Ganz recht, jedoch erwaehnte alex ja explizit die Moeglichkeit, dass es einen Schluessel gar nicht gibt. Wenn Du dann direkt obiges ausfuehrst, kann das Warnungen produzieren (wenn -w aktiv ist, was es immer sollte). Daher besser auch pruefen, ob der Schluessel existiert *und* einen Wert hat:
  if (exists($hash{$schluessel}) && defined($hash{$schluessel}) && $hash{$schluessel} == $wert) { }
Da defined nur zutreffen kann, wenn auch exists zutrifft (d.h. exists gibt entweder sowieso true, oder defined ergibt *auch* false), kann man exists hier auch weglassen, wodurch sich das vereinfacht auf:
  if (defined($hash{$schluessel}) && $hash{$schluessel} == $wert) { }

Siehe auch: perldoc -f exists

So long