Sascha: Datum

Hallo allerseits, ich bin kein Perl -Meister, deswegen bin ich auf eure Hilfe angewiesen.
Mein Problem: was is an diesem Code falsch?

Get the Date

@months = ('January','February','March','April','May','June','July','August','September','October','November','December');
  @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
  ($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];
  $year += 1900;
  $date = "$days[$wday], $months[$mon] $mday, $year";

Das wird dann mit
print "<tr><td colspan=2><font face="Arial,Helvetica" size=2 color=#660000>$date</td></tr>";
aufgerufen

Ich bekomme ständig das Folgende --- Sunday, January , 1900 --- :(

Ich bedanke mich schon im Voraus!

  1. Hi,

    ($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];

    Ich bekomme ständig das Folgende --- Sunday, January , 1900 --- :(

    der Code ist im Prinzip korrekt. Gib doch mal folgendes aus:

    print "Content-type: text/plain\n\n";
    print time, "\n";
    print localtime(time), "\n";
    print (localtime(time));

    Cheatah

    1. Danke Cheatah, aber ich glaube ich verstehe es einfach nicht. Ich habe es ausprobiert, klappt nicht :(

      1. Hi,

        Danke Cheatah, aber ich glaube ich verstehe es einfach nicht. Ich habe es ausprobiert, klappt nicht :(

        was heißt "klappt nicht"? Ich habe Dir ein Codefragment gegeben, daß CGI-tauglich ist (sein müßte). Du müßtest also eine Ausgabe bekommen, und genau die ist es, die ich wissen will.

        Ansonsten schau auch mal ins Error-Log Deines Servers.

        Cheatah

        1. Hi,

          Danke Cheatah, aber ich glaube ich verstehe es einfach nicht. Ich habe es ausprobiert, klappt nicht :(

          was heißt "klappt nicht"? Ich habe Dir ein Codefragment gegeben, daß CGI-tauglich ist (sein müßte). Du müßtest also eine Ausgabe bekommen, und genau die ist es, die ich wissen will.

          Ansonsten schau auch mal ins Error-Log Deines Servers.

          Cheatah

          Dumme Frage, aber werden die variablen wie $wday und so überhaupt belegt, also bit localtime() ausgelesen ? :o)

          1. Hi,

            Dumme Frage, aber werden die variablen wie $wday und so überhaupt belegt, also bit localtime() ausgelesen ? :o)

            ($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];

            Wenn es sich um ein "normales" localtime handelt, wird es hier im Listenkontext aufgerufen und liefert in der Tat mindestens sieben (also mindestens bis Index 6) Einträge zurück (s. perldoc -f localtime). Die Variablen werden also gefüllt.

            Aufgrund eines Postings weiter oben nehme ich aber an, daß es sich eben nicht um ein "normales" localtime handelt ;-)

            Cheatah

    2. Hi,

      ($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];

      Ich bekomme ständig das Folgende --- Sunday, January , 1900 --- :(

      der Code ist im Prinzip korrekt. Gib doch mal folgendes aus:

      print "Content-type: text/plain\n\n";
      print time, "\n";
      print localtime(time), "\n";
      print (localtime(time));

      Cheatah

      Ich bekomme Error 500, das heisst daß die Script gar nicht aufgerufen wird oder?
      Ich habe deinen CodeFragment unten, wo die html Datei erzeugt
      wird, gesetzt. Ich bin kein Perl Programierer :( ich habe fertige Script die eigentlich, abgesehen von dem Datum, prima funkt. Ich habe es so versucht:
      ---------------
      print "Content-type: text/plain\n\n";  
      ......................
      print "<tr><td colspan=2><font face="Arial,Helvetica" size=2 color=#660000>$date</td></tr>";
      print time, "\n";
      print localtime(time), "\n";
      print (localtime(time));

      dann aber auch mit Einfuerungsstrichen :
      print "time, "\n";"
      print "localtime(time), "\n";"
      print "(localtime(time));"

      beides klappt nicht. Ich weiß, daß das obige für euch ein Bißchen komisch ist, aber für mich gar nicht :)
      HILFE!

      1. hi sascha

        print time, "\n";
        print localtime(time), "\n";
        print (localtime(time));

        ?? ist doch o.k. -> liefert die sekunden seit 1.1.1970

        dann aber auch mit Einfuerungsstrichen :
        print "time, "\n";"

        ups! also wenn schon, dann:
        print time, "\n";

        print "localtime(time), "\n";"
        print "(localtime(time));"

        auch hier bist du mit den " unpaarig (außerdem würde das semikolon am ende fehlen)

        ansonsten kapiere ich es nicht; ich habe gerade Deinen code ausprobiert:

        Get the Date

        @months = ('January','February','March','April','May','June','July','August','September','October','November','December');
          @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
          ($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];
          $year += 1900;
          $date = "$days[$wday], $months[$mon] $mday, $year";
        print "\n$date\n";

        .... und ich bekomme das richtige ergebnis (hätte mich auch gewundert, wenn nicht).

        Tja ..

        Ciao
        K@rl

        1. Ok , Ich habe das Gleiche angegeben, und jetzt bekomme ich das:

          963026576 Time::tm=ARRAY(0x5fe0f4) Time::tm=ARRAY(0x5fe100)

          sagt mir nicht viel :)

          Thx!

          1. Hi,

            963026576 Time::tm=ARRAY(0x5fe0f4) Time::tm=ARRAY(0x5fe100)

            sagt mir nicht viel :)

            mir sagt es, daß da irgendwas mit Deiner Umgebung tüchtig schief läuft ;-)

            Also, der erste Wert ist in Ordnung, er entspricht der Zahl der Sekunden, die seit dem 1.1.1970 vergangen sind. Die beiden anderen Werte sollten aber ebenfalls Zahlen sein (genauer gesagt: jeweils mehrere Werte, die direkt nebeneinander geschrieben werden und wie eine einzige Zahl aussehen), und zwar zweimal die gleichen.

            Nachdem ich ein wenig die Doku gewälzt habe, scheint es mir so, als würdest Du aus irgendwelchen Gründen das Modul Time::localtime verwenden. Befindet sich in Deinem Script (ggf. auch in per "require" eingebundenen Dateien) die Zeile "use Time::localtime;" o.ä.?  Wenn ja, kommentiere sie doch mal aus; wenn ähnlich, wie genau lautet sie?; wenn nein - hm.

            Cheatah

            1. Hallo!
              Ok Ich glaube, es ist am einfachsten wenn ich euch den Code zum Anschauen gebe
              http://207.61.131.98/orderform14.txt
              , da ich ja sowieso nicht viel verstehe. Ich hoffe, ich werde mich verbessern :)
              Jedenfalls, Danke für eure Bemühungen!

              1. Hi,

                Ok Ich glaube, es ist am einfachsten wenn ich euch den Code zum Anschauen gebe
                http://207.61.131.98/orderform14.txt

                ARGH! Ein grauenhafter Code.

                , da ich ja sowieso nicht viel verstehe.

                Verständlich, wenn ich mir das so angucke :-)

                Eine Ursache für das Problem kann ich jedenfalls nicht entdecken, aber vielleicht steckt die ja in der orderconfig.cgi?

                Ansonsten frage bitte mal Deinen Provider zu dem Thema. Es könnte eine Konfigurationssache sein, in die Du evtl. nicht mal eingreifen kannst. In dem Fall würde ich das allerdings als verhunzt bezeichnen, denn zumindest der Code, der das Datum generiert, ist gut.

                Cheatah

                1. Ok Danke vielmals!

                  P.S
                  Ich wundere mich, daß der Code so häßlich ist weil ziemlich bekannt.
                  http://www.io.com/~rga/scripts/cgiorder.html
                  Na ja, who knows.

                  1. Hi,

                    Ich wundere mich, daß der Code so häßlich ist weil ziemlich bekannt.

                    das hat nichts zu sagen. Die Scripts von Matt Wright sind auch populär wie sonstwas, aber jedes für sich ein Alptraum für Perl-Programmierer. Schlichtweg grauenhaft. Du siehst also, der Bekanntheitsgrad eines Produkts hat nichts mit der Qualität desselben zu tun - die Verbreitung von MS-Software beweist es ;-)

                    Cheatah

                    1. Hi Cheatah, ich habe endlich das Problem entdeckt. Es hatte ja wie du sagtest nichts mit dem Code zu tun gehabt. Das Problem war, das ich Velocigen Application Server hatte.
                      Hier ist die Info:
                      http://www.psiweb-guide.aa.psiweb.com/Velocigen/faqs.htm

                      Nachdem ich es ausgeschaltet hatte, habe ich das Datum gekriegt.
                      Gruß!