Ich habe mir noch mal die Mühe gemacht, und alles so wie du empfiehlst eingegeben. Leider geht es auf deine Weise nicht.
Natürlich geht das.
Ich habe das ausprobiert, weil meine Version auch nur unter der standartmethode läuft. Sobald ich use strict eingebe geht nichts mehr.
Natürlich geht das, ich hab es ebenfalls ausprobiert und selbst deine Version ist sogar strict
Nachfolgend mal ausnamsweise den ganzen Code.
Wenn ich an all die alten Perl Threads von dir denke, dann ist in deinem Code so wenig von dem drin, was wir dir ermpfohlen hatten, dass es wirklich müsig ist sich Gedanken zu machen.
Ah, wegen der Funktion ober CGI::Cookie und CGI::cookie ---> Mein Perl _will_ Cookie groß geschrieben. Klein meckert er no such xxx fund usw...
Sicher nicht. Das Problem ist, du verwechselst etwas, weil du immer noch nicht verstanden hast, was Module, Packages, Objekte und Funktionen sind.
Du bindest CGI::Cookie ein und erzeugst daraus ein Objekt. Das ist nicht nötig, das Modul wird bereits vom Modul CGI eingebunden.
Das musst du auch nur EINMAL einbinden (auch wenn es im Prinzip egal ist ob du es zweimal im Code schreibst, es zeigt aber dass du immer noch nicht die Doku gelesen hast).
Das du das so benutzt: use CGI qw(:standard); zeigt, dass du nicht weißt was du tust.
Das Cookie Objekt wird von der Funktion Cookie->cookie() erzeugt, dass musst nicht du machen.
Hier der Vorläufige Perl-Code:
Neben den oben erwähnten Mängeln muss eines dazu gesagt werden: BENUTZE FUNKTIONEN!!!!!
Sowas ist furchtbar und da war es schon zu Zeiten des C64
###############
Datenfilter
###############
$anrede =~ s/;//g;
$vorname =~ s/;//g;
$name =~ s/;//g;
$geboren =~ s/;//g;
$hausnummer =~ s/;//g;
$land =~ s/;//g;
$plz =~ s/;//g;
$ort =~ s/;//g;
$telefon =~ s/;//g;
$fax =~ s/;//g;
$email =~ s/;//g;
12 Mal der gleiche Code, vor allem warum filterst du nur den Strichpunkt?
#############
HTML-Kopf
#############
print CGI->header(-type=> 'text/html', -cookie=>$cookie1);
Hier benutzt du eine Funktion des sehr grossen CGI.pm Modul.
Ich hab dir in dem Thread schon mehrmals einen Link auf die Dokumentation gezeigt. Wenn du sie gelesen hättest, würdest du sehen, dass das Modul noch viel, viel mehr kann, das fängt an hier:
print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n";
print qq(<html>),"\n";
print qq(<head>),"\n";
print qq(<title>Euro-Superconductors</title>),"\n";
print qq(<link rel="stylesheet" type="text/css" href="http://localhost/eus-home-de.css" media="screen, projection" >),"\n";
print qq(<meta http-equiv="Content-Language" content="de">),"\n";
[usw. usf.]
print qq(</head>),"\n";
Den ganzen Header Kram kann das CGI Modul besser und schöner (wobei die meisten meta Angaben völlig überflüssig sind).
print qq(<body>),"\n";
print qq(<div class="hintergrund-oben">),"\n";
print qq(</div>),"\n";
print qq(<div class="hintergrund-oben-traverse">),"\n";
print qq(</div>),"\n";
print qq(<div class="hintergrund-unten">),"\n";
print qq(</div>),"\n";
print qq(<div class="hintergrund-links">),"\n";
print qq(</div>),"\n";
print qq(<div class="hintergrund-rechts">),"\n";
print qq(</div>),"\n";
print qq(<div class="ecke-oben-links">),"\n";
print qq(</div>),"\n";
print qq(<div class="ecke-oben-rechts">),"\n";
print qq(</div>),"\n";
print qq(<div class="ecke-unten-links">),"\n";
print qq(</div>),"\n";
print qq(<div class="ecke-unten-rechts">),"\n";
print qq(</div>),"\n";
print qq(<div class="haupt-banner">),"\n";
print qq(</div>),"\n";
Mal abgesehen davon, dass ich sowas für ein riesen Gemurkse halte, nur um einen vermeintlich "schönen" Rahmen zu machen, das HTML dermassen aufblähen, ist eben das: gebläht
Stattdessen würde sich in so einem Fall anbieten ein Template zu verwenden. HTML::Template ist zwar veraltet, aber für den Einstieg durchaus brauchbar. Aber da du eh keine Dokumentationen liest, ist der Hinweis wohl überflüssig.
print qq(<select class="mengenbreite" size="1" name="menge01">),"\n";
print qq(<option value="">---</option>),"\n";
print qq(<option value="1">1x</option>),"\n";
print qq(<option value="2">2x</option>),"\n";
print qq(<option value="3">3x</option>),"\n";
print qq(<option value="4">4x</option>),"\n";
print qq(<option value="5">5x</option>),"\n";
print qq(<option value="6">6x</option>),"\n";
print qq(<option value="7">7x</option>),"\n";
print qq(<option value="8">8x</option>),"\n";
print qq(<option value="9">9x</option>),"\n";
print qq(<option value="10">10x</option>),"\n";
print qq(</select>),"\n";
Hast du dir schon mal angeschaut was das CGI Modul kann?
Nein?
Genau für solche Formularelemente ist es top und erspart dir Arbeit und macht den Code lesbarer.
Ja, wie gesagt - es geht - und keiner weiss warum >:-)
Wenn das dir reicht.
Wie gesagt, lese Dokumentationen!
Schau dir an welche Module es gibt und guck dir auch mal ein paar Grundllagen an - auch dazu gibt es bei perldoc viele, viele nützliche Seiten. Ich persönlich weigere mich dir weiterhin zu helfen, solange ich nicht erkenne, dass du das wirklich tust.
Struppi.