Thomas: cgi->redirect() funktioniert nicht

Hallo,
ich habe einen Apache-Webserver in dem ein Perl-Skript Werte von einer anderen Seite entgegennimmt. Nachdem die Werte verarbeitet worden sind, soll der Benutzer wieder auf die Startseite geleitet werden.
Also so:

$cgi = CGI -> new();
..
irgendwas
..

Umleiten

print $cgi->redirect('index.pl');

Die Funktion wird auch ausgeführt, nur in meinem Browser bekomme ich dann nur:
Status: 302 Moved Location: index.pl

Die Meldung wird wohl vom Apache kommen. Ich weiß aber nicht, wo denn der Fehler liegt dass ich nicht wieder auf diese Seite komme (diese liegt auch im gleichen Verzeichnis).
Vom Prinzip her ist das ja so wie hier: http://de.selfhtml.org/perl/module/cgi.htm#redirects beschrieben umgesetzt.

Jemand einen Hinweis?

Danke und Gruß
Thomas

  1. hallo,

    Also so:
    $cgi = CGI -> new();

    Bist du sicher, daß du das wirklich so machen möchtest? Oder nicht vielleicht doch in der Form, wie du es in der von dir angegebenen SELFHTML-Seite findest:
      my $cgi = new CGI;

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Bist du sicher, daß du das wirklich so machen möchtest?
      Oder nicht vielleicht doch in der Form, wie du es in der von dir angegebenen SELFHTML-Seite findest:
        my $cgi = new CGI;

      Meine Version habe ich aus einem Buch (gut, ist für Anfänger).
      Laut diesem Thread hier:
      http://forum.de.selfhtml.org/archiv/2006/12/t142477/

      gibt es wohl auch keinen Unterschied dazwischen (das "my" mal außenvor gelassen), oder doch?

    2. $cgi = CGI -> new();

      Bist du sicher, daß du das wirklich so machen möchtest? Oder nicht vielleicht doch in der Form, wie du es in der von dir angegebenen SELFHTML-Seite findest:
        my $cgi = new CGI;

      ausser dem my ist darin kein Unterschied. Du kannst in Perl das sowohl als auch schreiben.
      Dass erste ist sogar IMHO näher an der "Realität", da man die Funktion new des Pakets CGI aufruft und nicht wie in manchen Programmiersprachen ein Objekt CGI neu erzeugt (auch wenn es auf das selbe hinausläuft, aber new ist kein Schlüsselwort in Perl).

      Struppi.

      --
      Javascript ist toll (Perl auch!)
      1. Dass erste ist sogar IMHO näher an der "Realität", ...

        Etwas vielleicht auch Dich Interessierendes zur Realität der Linken bzw. Anarchisten hier:
        http://debatte.welt.de/kommentare/20445/1+mai+fr+eine+linke+die+diesen+namen+verdient

      2. ausser dem my ist darin kein Unterschied.

        Oh doch, da ist ein gravierender Unterschied.

        Du kannst in Perl das sowohl als auch schreiben.

        Soweit richtig, aber:

        Dass erste ist sogar IMHO näher an der "Realität", da man die Funktion new des Pakets CGI aufruft und nicht wie in manchen Programmiersprachen ein Objekt CGI neu erzeugt (auch wenn es auf das selbe hinausläuft, aber new ist kein Schlüsselwort in Perl).

        Lies mal den von mir verlinkten Teil von perlobj :)

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
        1. Lies mal den von mir verlinkten Teil von perlobj :)

          Stimmt, eigentlich auch logisch.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
    3. $cgi = CGI -> new();
      Bist du sicher, daß du das wirklich so machen möchtest?

      Wenn er noch Anfänger ist, sollte er es so machen.

      my $cgi = new CGI;

      Extra für dich und Struppi rausgekramt: Indirect Object Syntax. Das sollte Begründung genug sein.

      Siechfred

      --
      Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Hallo!

    Die Funktion wird auch ausgeführt, nur in meinem Browser bekomme ich dann nur:
    Status: 302 Moved Location: index.pl

    Hast du evtl. schon vorher irgendwo ein
    print $cgi->header()
    stehen? Das muss dann raus, da $cgi->redirect() ja einen Weiterleitungsheader ausgibt, also den $cgi->header() quasi 'ersetzt'.

    Grüße, Skrilax

    1. Hast du evtl. schon vorher irgendwo ein
      print $cgi->header()
      stehen? Das muss dann raus, da $cgi->redirect() ja einen Weiterleitungsheader ausgibt, also den $cgi->header() quasi 'ersetzt'.

      Danke,
      das war der Fehler!

      Gruß
      Thomas