Matti Maekitalo: Array als parameter?

Beitrag lesen

use Mosche;

Auch wenn die Frage bereits gelöst ist:

Wie gebe ich in Perl einen Array als Parameter weiter? Ich habe es mit name="wert" value=@array und @neuerarray = param("wert") versucht, aber irgendwie scheint das nicht zu klappen, da dann Daten verlorengehen.

Direkt geht das nicht. Eine Möglichkeit ist es aber, den Array so in dein Input-Feld zu schreiben, dass du ihn dann wieder mit Perl als Array auslesen kannst.

Einfachste Möglichkeit:
Du schreibst den Array mit join('...Trennzeichen...', @array) in dein Input-Feld. Dann kannst du den Array wiederbekommen mit @array = split(/...Trennzeichen.../, param('wert'))
Problem: die Array-Elemente selber dürfen nicht das Trennzeichen enthalten!

Nächste Möglichkeit:
Nimm ein passendes Modul, welches deinen Array serialisiert.
a) Data::Dumper
Du schreibst in dein Input-Feld einen Dump deines Arrays rein
use Data::Dumper;

und liest ihn entsprechend wieder aus:
my @array = @{eval(param('wert'))}; # ungetestet

Es gibt auch andere Möglichkeiten, Data::Dumper zu verwenden. Schau da mal in die entspr. perldoc.

b) Storable
Ist schneller als Data::Dumper

schreiben

use Storable qw(freeze);
print "<input type='hidden' name='wert' value='" . freeze(@array) . "' />";

lesen

use Storable qw(thaw);
my @array = @{thaw(param('wert'))};

use Tschoe qw(Matti);

--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
Webapplikationen in C++ entwickeln: http://www.maekitalo.de/tntnet/