Sven: Eingabefeld wird falsch ausgewertet

Kann mir jemand helfen?

Kurz gefasst findet Ihr hier:

http://www.stadtwerke-geesthacht.de/Strom/Tarifrechner/tarifrechner.html

eine Seite wo man einen Wert eingeben soll, der dann von einem perlscript ausgewertet werden soll.

Das Script rechnet auch richtig, wenn es denn mal den eingegebenen Wert aus dem Formular übernimmt - was es leider nicht immer macht - um nicht zu sagen fasst nie.

Kann mir jemand sagen woran es liegt?

Das Perlscript findet Ihr hier:

http://www.stadtwerke-geesthacht.de/Test

zum download in gepackter Form.

Vielen Dank im vorraus

Gruß Sven

  1. Hi,
    ok, Du solltest Dir wirklich entweder 'cgi-lib.pl' oder 'CGI.pm' ansehen.
    es ist wesentlich einfacher, wenn Du

    use CGI;
       $query = new CGI;
       $Eingabe = $query->param('Daten');

    oder
       require "cgi-lib.pl";
       &ReadParse(*input);
       $Eingabe = $input{Daten};

    (Nur so als Beispiel)

    verwendest um den Eingabewert aus deinem Vormular zu ermitteln, als alles selber zu machen.
    ok, der Lerneffekt ist nicht der gleiche, aber es erspart dir sicherlich viele Mühen. Weil wie das Formular vesendet wird, wie die Daten letzendlich zu dekodieren sind usw. ist eigentlich ein rechter Brocken.
    Außerdem sind da noch einige andere Funktionen drin, di Dir das leben sicherlich erleichtern werden.

    hoff, Du kannst was damit anfangen
    Klaus

    1. Danke für Deine schnelle Antwort - aber ehrlich gesagt ist mir das im Moment zu hoch.

      Hast Du vielleicht einen einfachern Tip.

      Gruß Sven

  2. Hallo Sven,
    ich hab noch ein bißchen herumgespielt mit deinem Script. Es sieht so aus, daß das ganze unter Apache mit mod_perl läuft.
    Denn da ist das Problem, daß sich die Ergebinsse wiederholen, obwohl ich immer den gleichen Wert, nämlich 'ddkhskj' eingebe. Mal sagt der Server, daß die Daten falsch sind, mal rechnet er mit 2000, mal mot 1500 kW.
    Das scheint mit mod_perl zusammenzuhängen.
    Da hilft nur eins:
       use strict;
    und
       my($Variable);

    Im Gegensatz zu  'normalen' Perl-scripts werden script, die auf einem Server mit mod_perl arbeiten nicht mehr beendet. Dadurch bleiben Variableninhalte auch nach beendigung der Verbindung erhalten.

    Wenn aus irgendeinem Grunde die Variable nicht jedesmal initialisiert wird, also explizit auf 0 oder "" zurückgesetzt wird, dann übernimmt das script den Wert aus dem vorherigen Aufruf. Und daß die Werte rotieren hat seinen Grund darin, daß der Apache mehrere Subprozesse laufen hat, auf welche er die Anfragen zyklisch verteilt. Un jeder dieser Subserver hat seine eigene Version des Scripts gespeichert.

    Ich glaub das ist ein wesentlicher grund für Deine Probleme

    Grüße
    Klaus

    1. Hallo Klaus,
      danke für den Tip, werde ich mal ausprobieren.

      Sobald ich es getestet habe werde ich mich nochmal melden, ob es funktioniert hat - wird aber sicherlich eine ganze Zeit dauern, weil perl ist echt nicht meine Stärke.

      Gruß Sven