MoD: Modul nicht gefunden ?

Beitrag lesen

Hier mal das gesamte Script,

der erste Versuch geht ja meist in die "Hose":

(soll heissen - das ist mein erstes Script in Perl)

Wenn Jemand mal so nett wäre das Script auf Fehler zu untersuchen:

(vieles sind auch Kommentare - der eigentliche Code ist nicht so viel)

#!/usr/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);

#---------------Variablen werden vereinbart-----------------------------------------------------------------------------------

my $sendmailprog = "/usr/lib/sendmail"; #Das Standard Mail-Prog auf Unix-Rechnern wird aufgerufen.

my %Daten = (); #Der Hash für die Aufnahme der Daten wird vorbereitet

#**************Variablenvereinbarung*ist*zu*ende******************************************************************************

#----------------erste Subroutine zum Aufsplitten der Standardeingabe----------------------------------------------------------

sub readin()

{
 my $rohdaten;
 my @Datenroh;
 my $wertname;
 my $value;
 my $temporaer;

read(STDIN, $rohdaten, $ENV{'QUERY_STRING'}); #Einlesen der Daten
 @Datenroh = split(/&/,$rohdaten); #Aufsplitten des Eingabestrings zu einem Hash

foreach $temporaer (@Datenroh) #foreach geht den Hash @Daten durch und der aktuelle Wert liegt in $Daten (ansonsten in $_)
  {
  ($wertname, $value) = split(/=/, $temporaer); #Aufsplitten der Datenpaare in Wert und Name - temp dient der temporären Aufnahme der Daten

$value =~ tr/+/ /; #Da in URL-encoded Leerzeichen mit + codiert werden, muss + durch den Befehl tr rückgewandelt werden
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g; #Ersetze die Zeichenfolge '<!--' gefolgt von beliebig vielen beliebigen Zeichen oder beliebig vielen Newline-Zeichen durch nichts."
  $value =~ s/<([^>]|\n)*>//sg; # Ersetze die Zeichenfolge '<!--' gefolgt von beliebigen Zeichen ausser dem groesser-als-Zeichen gefolgt von der Zeichenfolge '-->' durch nichts
  $value =~ s/<!--.*?-->?//sg; # Ersetzt alle HTML Kommentare

$Daten{$wertname} = $value; #Werte sind am Ende vollständig eingelesen

}  #For-each ist hier zu ende

#$Daten{Remote IP} = $ENV{'REMOTE_ADDR'};

$Daten{Domain IP} = $ENV{'REMOTE_HOST'}; -> Zeile 48 siehe erste

Antwort

#$Daten{Protokoll} = $ENV{'REMOTE_IDENT'};
 #$Daten{IP User} = $ENV{'REMOTE_USER'};

}

#--------------Ende der ersten Subroutine----------------------------------------------------------------------------------------

#---------------Subroutine zum versenden der Mail-----------------------------------------------------

sub send
{
 open(Sendmail, "| $sendmailprog"); #Die Datei sentmail wird über das Dateihandle Sendmail angesprochen -> man kann dem Unix-Prog sentmail werte übergeben
 select(Sendmail); #Standardein/-ausgabe Kanal wird auf sendmail festgelegt  und damit auf sentmail
 print "From: $Daten{'vorname'} $Daten{'name'} $Daten{'mail'} \n"; #übergibt sentmail die Variablen für den Absender
 print "To: Meine Mailaddi \n"; # Hier wird festgelegt an wen die Mail versendet wird
 print "Reply-To: $Daten{'mail'} \n"; #Wohin kann eine Antwort gesendet werden ?
 print "Subject: Mail über Webserver versendet \n";
 print "$Daten{'eingabe'} \n";
 print "Schule Ja/nein: $Daten{'schule'} \n";
 print "Alter: $Daten{'alter'} \n";
 print "Die Ip des Remote Servers: $Daten{'Remote IP'} \n";
 print "Die Domain des Remote Servers: $Daten{'Domain IP'} \n";
 print "Protokoll - Infos: $Daten{'Protokoll'} \n";
 print "Die IP des Users: $Daten{'IP User'} \n";
 close(Sendmail) || &error('schliessen');
 select(STDOUT);

}

#------------Ende der zweiten Subroutine--------------------------------------------------------------

#------------Subroutine für danke--------------------------------------------------------------------

sub thanks

{
 #print "Content-type: text/html\n\n";
 #print "<html><head><title>Danke für ihr Feedback</title>\n";
 #print "</head><body bgcolor="#1540B9">\n";
 #print "<font color="#FFFFFF"><div align="center">Danke für deine Mitteilung</font></div>"
        #print "\n</body></html>";

}

#----------Ende der dritten Subroutine----------------------------------------------------------------------

#°°°°°°°°°°°°°°°°°°°Aufruf derSubtoutinen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
&readin;
&send;
&thanks;