Hallo,
return ($name ? %{$formdata->{$name}} : keys %{$formdata});
wenn $name nicht NULL ist, dann gib $formdata{$name} zurück, wenn doch gib alle Schlüssel aus %formdata zurück. Meines Verständnisses nach, ist $name allerdings die einzige "Hash Reference" in dieser Zeile. Kann mich bitte jemand korigieren ?
IMHO ist dieser Code nicht wirklich krisensicher, da nur überprüft wird, ob $name übergeben wurde (mehr oder weniger), aber nicht ob es auch ein passendes Hash-Element gibt, und dieses auch eine Referenz auf ein weiteres Hash ist.
Vielleicht wäre
return ( ref($formdata->{$name}) eq 'HASH' ? %{$formdata->{$name}} : keys %{$formdata});
besser. Aber ich will mich nicht unbedingt in fremden Code einmischen;-)
Grüße
Klaus