MikePP: Array als parameter?

Morgen!

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.

Und noch eine Frage, kann ich mit einer Form Action eine Perl Funktion aufrufen? Wenn ja wie?

  1. 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.

    Du meinst als CGI Parameter?
    Das geht nicht. dass musst du dir irgendwie zusammenbasteln.

    Und noch eine Frage, kann ich mit einer Form Action eine Perl Funktion aufrufen? Wenn ja wie?

    Was heißt das?

    Struppi.

    1. Hallo Struppi,

      https://forum.selfhtml.org/?t=91217&m=548216

      Bert

      --
      E492: Not an editor command: Wq
      ln -s /dev/brain
  2. Denke ich habe das Problem allmälich im Griff, Dank an die hilfsbereiten Leute hier!

    1. Denke ich habe das Problem allmälich im Griff, Dank an die hilfsbereiten Leute hier!

      Ich vermute mal das du das Sarkastisch meinst.
      Da du aber nur ganz wage dein Problem beschreiben willst, ohne auch nur irgendeinen Hinweis was du tust oder was nicht funktiniert hat, kann die Hilfe von außenstehenden nur ganz allgemein ausfallen, auch wenn du mehrmals nachfragst ändert das nichts an der Problematik, deiner unzureichenden Fragestellung.

      Struppi.

      1. Eigentlich war das nicht sarkastisch gemeint, wüßte auch nicht welcher Teil in meiner Aussage das vermuetn läßt(?), und es half mir tatsächlich weiter. Aber wenn du möchtest nehme ich das Danke zurück (das war jetzt übrigens tatsächlich ironisch gemeint).

        1. Eigentlich war das nicht sarkastisch gemeint, wüßte auch nicht welcher Teil in meiner Aussage das vermuetn läßt(?), ...

          naja, weil du zweimal die gleiche Frage gestellt hast ohne dass irgendwie erkennbar war das das was ich dir gesagt hat dir weitergeholfen hatte. Für mich macht die aktuelle Version deiner Frage den Eindruck, dass du nach wie vor versuchst ein Perl CGI Skript als Shell skript aufzurufen. Aber vielleicht täusche ich mich ja auch.

          Struppi.

          1. naja, weil du zweimal die gleiche Frage gestellt hast ohne dass irgendwie erkennbar war das das was ich dir gesagt hat dir weitergeholfen hatte. Für mich macht die aktuelle Version deiner Frage den Eindruck, dass du nach wie vor versuchst ein Perl CGI Skript als Shell skript aufzurufen. Aber vielleicht täusche ich mich ja auch.

            Struppi.

            Die Frage heute hätt ich mir ganz einfach sparen können, war heute morgen noch nicht ganz da (bin ich jetzt eigentlich auch noch, aber irgendwie muß man ja Geld verdienen, "man muß tun, was man tun muß";).

  3. 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/