Alexander (HH): Wertzuweisung an Variable in Variable

Beitrag lesen

Moin Moin!

Hi,
vielleicht gibt es eine andere Möglichkeit?
Von einem Formular erhalte ich die Werte der Parameter
name1, name2, .....
durch $name1  = $query->param('name1');
      $name2  = $query->param('name2');

Das sieht nach CGI aus.

.... und, und, und ....
Schön wäre es, dies zu bewerkstelligen, ohne jeden Parameter hier einzeln aufzuführen.

Speichere die Parameter-Werte in einem Hash.

  
my %data=();  
foreach my $name (qw(name1 name2 foo bar baz)) {  
    $data{$name}=$query->param($name);  
}  

Falls $query eine Instanz von CGI ist, und Du alle Parameter in einem Hash haben möchtest, kannst Du damit anfangen:

  
my %data=map { $_ => [ $query->param($_) ] } $query->param();  

Damit hast Du einen Hash voller Array-Referenzen, jede einzelne speichert alle Werte eines Parameters (denn CGI-Parameter können mehrere Werte haben, z.B: bei Checkboxen -- und im Gegensatz zu PHP braucht Perl keine Markierungen am Parameternamen).

Ein Aufruf von script.cgi?foo=1;bar=23;foo=42;name1=9 liefert Dir dann

  
%data=(  
    name1 => [ 9 ],  
    foo => [ 1, 42 ],  
    bar => [ 23 ],  
);  

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".