Tach,
Btw., die Doku CGI.pm http://search.cpan.org/~leejo/CGI-4.22/lib/CGI.pod gibt einen Hinweis auf mögliche Probleme (Warning - calling param() in list context can lead to vulnerabilities ....).
Der Text davor lautet: „Pass the param() / multi_param() method a single argument to fetch the value of the named parameter. If the parameter is multivalued (e.g. from multiple selections in a scrolling list), you can ask to receive an array. Otherwise the method will return a single value.“
Also, was muss ich tun, um ein Array zurückzubekommen? Ich würde davon ausgehen, dass ich einen weiteren Parameter übergeben muss, nicht dass ich in einem impliziten Zustand bin, der mehrere Paremater akzeptieren kann. Und selbst dann bekomme ich eben kein Array zurück, sonst würde ja ein Hash um einen Paramater (nämlich das Array) erweitert werden und nicht die zurückgegebene Liste den Hash in unerwarteter Weise vergößern.
@array = ['foo','bar'];
@list = (1,2,3);
%hash = ('a' => @array, 'b'=>@list);
print $hash{'a'}."\n".$hash{'b'}."\n".$hash{'2'}."\n";
Ausgabe:
ARRAY(0x1456d48)
1
3
Ich würde das erwarten, was a zugewiesen wird, aber nicht das was in b zugewiesen wird und erst recht nicht, dass etwas der 2 zugewiesen wird.
mfg
Woodfighter