Ich habe mein CGI-Script schon auf folgende Zeilen reduziert:
#!/usr/bin/perl -w
use CGI;
my $cgi = new CGI;
$cgi->redirect('../asf/main.php');
exit;
Ich bekomme immer wieder einen HTTP-500 Fehler und das Error-Log ergaenzt sich durch folgende Zeile "... Premature end of script headers ..."
Ich empfehle Dir dringend, Dich mit dem CGI-Modul besser vertraut zu machen. Die Dokumentation ist einfach lesbar und sehr ausführlich. Da hättest Du auch gefunden, dass die redirect-Methode nichts schreibt, Du musst ihren Ouput mit print noch ausgeben. Ferner empfiehlt es sich immer, warnings und strict zu benutzen. exit aufzurufen ist am Ende des Skripts auch unnötig. Meine Version sollte mit richtigen Dateizugriffsrechten funktionieren:
#!/usr/bin/perl
use warnings;
use strict;
use CGI qw(:standard fatalsToBrowser);
my $cgi = new $cgi;
print $cgi->redirect("http://www.example.org/"); # besser absolute URIs angeben!
__END__
You should always use full URLs (including the http: or ftp: part) in
redirection requests. Relative URLs will not work correctly.
Ein Hallowelt-Skript sähe so aus:
#!/usr/bin/perl
use warnings;
use strict;
use CGI qw(:standard fatalsToBrowser);
my $cgi = new CGI;
print $cgi->header(-type => 'text/plain');
print "Hallo Welt! Hier spricht $0.";
__END__
Ich persönlich bevorzuge übrigens das prozedurale CGI-Interface, aber das ist Geschmackssache und hängt auch von der Größe des Projekts ab. Wenn Du ausschließlich das OOP-Interface nutzen willst, musst Du :standard nicht dazuholen. fatalsToBrowser empfiehlt sich während der Entwicklung aber schon...
HTH, und bedenke: TIMTOWTDI

Mirko