hi,
mgmngh .... hat nur bedingt mit wantarray zu tun weil keine Funktion aufgerufen wird.
Die hab ich mittlerweile. wantarray ist echt der Hammer, kein Wunder, dass es in vielen Modulen zu finden ist ;-)
Also meine Lösung ist die, dass ich jetzt 2 Funktionen habe, eine Funktion erstellt den hash und gibt eine Ref darauf. Die 2. Funktion ist diejenige, die im Kontext von wantarray steht:
sub pram{
my $key = shift;
$pramref = parseAll() if not defined $pramref;
if($key){
if(wantarray){ return @{$$pramref{$key}}; }
else{ return $$pramref{$key}->[0]; }
}
else{
return(keys %{$pramref});
}
}
pram('name') liefert mir so einen Namen, pram('vname') hingegen liefert mir bei Bedarf ein Array der Vornamen, falls es mehrere gibt. Die Funktion parseAll() ist eine abgespeckte Version für CGI::param(), ich kann also, wenn ich meine pram() mehrmals aufrufe, den hash dazu im Vorab erstellen, muss also nicht jedesmal den Parser laufen lassen. Falls der Parser nicht vorgeladen wurde, wird er mit pram() angezogen. Mein Parser macht ein bischen mehr als CGI.pm, ich hab auch http-request-header zu parsen, das macht mein parser gleich mit ;-)
Viele Grüße,
Horst Hackfleisch