Holzner Roland: Perl-Aufruf aus CGI generierter HTML mit Parameterübergabe

Hallo
Ich arbeite gerade an einer Internet-Zeitung für Klagenfurt.Natürlich darf in so einer Zeitung ein Kleinanzeigenteil nicht fehlen. Die Version 1.0 meiner Skrips hat funktioniert und so dachte ich mir, ich sollte diesen Kleinanzeigenteil noch mehr ausschmücken. Doch leider haben sich mir jetzt einige Probleme in den Weg gestellt.
Ich generiere aus meinem Perl-Skript eine HTML-Seite, die eine Tabelle mit Kurzbeschreibungen enthällt. Wenn man eine dieser Kurzbeschreibungen anklickt ( Link ) dann wird ein anderes Perl-Skript gestartet und als Parameter übergebe ich die Kurzbeschreibung selbst, die in einer Liste steht.
Das Problem ist, das das andere Skript den Parameter nicht bekommt, der in der vordefinierten Variable $ARGV sein sollte.
Die Frage ist, wenn ich ein Perl-Skript mit einem Link aufrufe, kann ich dann einen Parameter übergeben?Oder muss der Parameter ein bestimmtes Format haben (z.B. keine Leerzeichen)?

Hier ist die Zeile aus meinem Skript, die den Link ausgibt.
print "<td width=66% align="center"><a href="test.pl ",@Kurztext[$a],"">",@Kurztext[$a],"</a></td>\n";

Und die zweite Frage ist:
Wenn ich aus dem ersten Skript eine HTML-Seite generiere, und ich möchte dann eine zweite generieren, dann hängt die zweite Seite immer an der ersten unten dran.
Was muss ich tun, um eine zweite Seite zu generieren, die nicht an der ersten hängt?

Ich hoffe, das mir hier jemand helfen kann.

Vielen Dank noch an Stefan Münz, der mir das CGI-Programmieren erst ermöglichte.

  1. Hallo Roland,

    print "<td width=66% align="center"><a href="test.pl ",@Kurztext[$a],"">",@Kurztext[$a],"</a></td>\n";

    Wenn Du einem Perl-Script auf CGI-Basis Daten uebergibst, kannst Du die GET-Methode oder die POST-Methode verwenden. Interessant ist in diesem Zusammenhang wohl eher die GET-Methode, weil sie es erlaubt, direkt an die URL-Adresse, getrennt durch ein Fragezeichen, Daten anzuhaengen, die dann als Parameter uebergeben werden. Dazu aber beachten:

    1. Hinter der URL und vor den zu uebergebenden Daten muss ein Fragezeichen kommen. Das fehlt in der obigen Syntax. Also etwa so:
    print "<td width=66% align="center"><a href="test.pl?@Kurztext[$a]">@Kurztext[$a]</a></td>\n";

    2. Wenn es Probleme gibt, sollten die zu uebergebenden Daten vor der Uebergabe nach den Regeln des Mime-Types application/x-www-form-urlencoded kodiert werden. Ich weiss jetzt leider nicht, ob es dafuer eine Perl-Funktion oder einen genialen regulaeren Ausdruck gibt - vielleicht kennt jemand einen solchen.

    3. Das CGI-Script muss, um an die GET-Daten zu kommen, die CGI-Umgebungsvariable QUERY_STRING auslesen. Also etwa so: $daten = $ENV{'QUERY_STRING'};

    Und die zweite Frage ist:
    Was muss ich tun, um eine zweite Seite zu generieren, die nicht an der ersten hängt?

    Hmmm? Du musst Dir das Spielchen zwischen Server und Browser vorstellen. Direkt an den Browser kann immer nur eine HTML-Datei gesendet werden (mehr kann er ja nicht zu ein und derselben Zeit anzeigen).
    Wenn Du eine andere Datei erzeugen willst, kannst Du die z.B. erst mal als Datei speichern. In der ersten Datei (die, die an den Browser gesendet wird), koennte dann bereits ein Link auf diese andere Datei enthalten sein.
    Oder habe ich das falsch verstanden - was genau willst Du da erreichen?

    Viele Gruesse
      Stefan Muenz