Frank: Perl-Script arbeitet einwandfrei, produziert aber trotzdem einen Error500

Beitrag lesen

Hallo,

ich bin kein Perl-Gott, bringe aber normalerweise ein fertiges Script konfiguriert und zum laufen. Nun habe ich ein Problem mit einem Script, welches Referrer URL`s logt. Das Script schreibt dabei die ermittelten URL's in ein Textfile.

Das Script selbst wird per SSL Aufruf gestartet:
<!--#include virtual="/cgi-bin/referrer/referrer.cgi" -->

Ich schwöre, dass Script schreibt das Logfile (referrer.txt )durch den SSL Aufruf völlig einwandfrei. Trotzdem erscheint im Browser an der Stelle, wo das SSL Aufruf ist eine Fehlermeldung:
[an error occurred while processing this directive]

Vielleicht ist ja ganz am Ende des Scriptes (siehe unten) ein kleiner Bug??

Wenn ich das Script direkt als URL im cgi-bin Verzeichnis  in den Browser eingebe kommt ein Error500. Ein einfaches cgi debugger Script konnte keinen Fehler am refferer Script feststellen - und ich bin offensichtlich auch zu blöd dazu.

Weis von Euch vielleicht jemand was da falsch läuft?
Dank im voraus!

Grüße Frank

Hier das Script, wie ich es verwende:

$linkfile="referrer.txt";
$linked_site="Unbekannt";

$ignore="www.your-host.com";
#  Set this to whatever address your site is at.  This way the script will
#  not log any links coming directly from your site.

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/~!/ ~!/g;
$FORM{$name} = $value;
}

open(LINKS,$linkfile)die "$linkfile doesn't look good";
@lines=<LINKS>;
close(LINKS);

foreach $link(@lines)
{
chomp($link);
($linker,$hits)=split(//,$link);
$linker_array{$linker}=$hits;
}

unless (($ENV{'HTTP_REFERER'} eq "") ((($ignore ne "") &&
($ENV{'HTTP_REFERER'}=~/$ignore/))))
{$linked_site=$ENV{'HTTP_REFERER'}}

$linker_array{$linked_site}++;

{@keys=sort {$linker_array{$a} <=> $linker_array{$b}} keys(%linker_array)}

open(LINKS,">$linkfile");
foreach $key(@keys)
{
print LINKS qq~$key$linker_array{$key}\n~;
}
close(LINKS);

1;