Sigrun: Beispile aus SELFHTML läuft auf meinem lokalen Server nicht

Hallo,
in Kapitel "Vordefinierte Variablen in Perl" steht das untenstehende Beispiel.
Beim Start auf meinem Server kommt ein Fenster
'Sie möchten folgende Datei herunterladen .....".

Wenn ich die Zeile "print Versionsnummer ..." weglasse, läuft das Skript!
Was an der Zeile (oder an meinem lokalen Server) falsch ist, kann ich als Anfänger leider nicht feststellen.

  
#!/usr/bin/perl -w  
  
use strict;  
use CGI::Carp qw(fatalsToBrowser);  
use English;  
  
print "Content-type: text/plain\n\n";  
print "===Vordefinierte Skalare====================================\n\n";  
print "Prozessnummer dieses laufenden Prozesses: $$ oder $PID\n";  
print "Bei diesem Prozess ausgeführte Datei:  $0 oder $PROGRAM_NAME \n";  
print "Diesen Prozess ausführender Interpreter:  $^X oder $EXECUTABLE_NAME \n";  
print "Versionsnummer des Perl-Interpreter:  $] oder $PERL_VERSION \n";  
print "Startzeit des Prozesses:  $^T oder $BASETIME \n";  
print "Betriebssystem:  $^O oder $OSNAME \n";  
print "\n\n===Vordefinierte Listen=====================================\n\n";  
print "Übergebene Argumente:\n";  
my $i = 0;  
foreach (@ARGV) {  
  print ++$i,". Argument: $_\n";  
}  
$i = 0;  
print "\nSuchpfad für Perl-Module:\n";  
foreach (@INC) {  
  print ++$i,". Pfad: $_\n";  
}  
print "\n\n===Vordefinierter Hash======================================\n\n";  
foreach (keys %ENV) {  
  printf " %20s:  $ENV{$_} \n",$_;  
}  

  1. moin,

    #!/usr/bin/perl -w

    ist schonmal gut, da bekommst Du Warnungen.

    Lass Dein Script auf der Kommandozeile laufen, dann siehst Du auch die Warnungen.

    --Klug

    1. Lass Dein Script auf der Kommandozeile laufen, dann siehst Du auch die Warnungen.

      Weiß leider nicht wie das geht!?
      Habe noch nie damit gearbeitet.

      1. Hi,

        Lass Dein Script auf der Kommandozeile laufen, dann siehst Du auch die Warnungen.
        Weiß leider nicht wie das geht!?
        Habe noch nie damit gearbeitet.

        Wie arbeitest du? Auf einem lokalen Webserver auf deinem Rechner, oder auf einem gemieteten/gratis Webserver, der irgendwo anders steht?
        Welches Betriebssystem und welchen Webserver benutzt du?

        Wahrscheinlich weisst du auch nicht, wo die Error-Logfiles liegen?

        mfG,
        steckl

        1. Wie arbeitest du? Auf einem lokalen Webserver auf deinem Rechner,

          Auf meinem Rechner mit dem neuesten XAMPP. Bei der Installation war nie ein Arbeiten mit Kommandozeile nötig

          Welches Betriebssystem und welchen Webserver benutzt du?

          WIN XP, Apache/XAMPP

          Wahrscheinlich weisst du auch nicht, wo die Error-Logfiles liegen?

          In den mir bekannten access.log und error.log sind lkeine Fehler verzeichnet.

      2. moin,

        Lass Dein Script auf der Kommandozeile laufen, dann siehst Du auch die Warnungen.
        Weiß leider nicht wie das geht!?
        Habe noch nie damit gearbeitet.

        Na da wirds ja Zeit ;-)

        perl scriptname

        --Klug

        1. Bei Aufruf über die Kommandozeile funktioniert es, allerdingd wird
          der Wert "$PERL_VERSION" in dem print

          print "Versionsnummer des Perl-Interpreter:  $] oder $PERL_VERSION \n";

          nicht angezeigt.
          Daraufhin habe ich $PERL_VERSION weggelassen und es läuft in beiden Versionen.
          Es liegt also an $PERL_VERSION. Aber was ist daran falsch?

          1. moin,

            Es liegt also an $PERL_VERSION. Aber was ist daran falsch?

            falsch ists nicht, aber es fehlt was vorher:
            use English;

            --Klug

            1. Hi,

              falsch ists nicht, aber es fehlt was vorher:
              use English;

              im Skript ist "use English;" vorhanden.
              Aber vielleicht muss in der Serverkonfiguration dies auch berücksichtigt werden?

              1. moin,

                Aber vielleicht muss in der Serverkonfiguration dies auch berücksichtigt werden?

                Es braucht eine spezielle Formatierung zur Ausgabe von $PERL_VERSION oder $^V, ruf mal auf der Kommandozeile auf:

                perldoc -f sprintf

                Hier ein Script dazu:
                #!/usr/bin/perl

                use strict;
                use English;

                print "$]\n";                      # 5.006001

                print "$PERL_VERSION\n";           # müll
                print "$^V\n";                     # müll

                perdoc -f sprintf ... da steht was von %vd

                printf("%vd\n", $PERL_VERSION);    # siehe print "$]\n"; => 5.6.1

                --Klug

                1. Das wars!
                  Was mich wundert, ist nur, dass es im SELFHTML läuft und den Wert nur nicht andruckt, und er auf meinem lokalen Server aber etwas Herunterladen will.
                  (Beim Start auf meinem Server kommt ein Fenster
                  'Sie möchten folgende Datei herunterladen .....".)
                  Aber das ist wohl so in der Internet-Welt!
                  Danke vielmals für die Hilfe!

                  1. Hallo,

                    Was mich wundert, ist nur, dass es im SELFHTML läuft und den Wert nur nicht andruckt, und er auf meinem lokalen Server aber etwas Herunterladen will.
                    (Beim Start auf meinem Server kommt ein Fenster
                    'Sie möchten folgende Datei herunterladen .....".)

                    Das liegt wohl an deinem Xampp, das vermutlich den neuesten Perlinterpräter nützt. Dazu wird schon im SELFHTML gesagt (wie ich dir empfohlen habe: https://forum.selfhtml.org/?t=153286&m=997319)

                    $]     Enthält die genaue Versionsnummer des ausführenden Perl-Interpreters. Diese Variable sollte nicht mehr verwendet werden. Stattdessen wird zu $^V geraten.

                    Grüße
                    Thomas

                    1. $]     Enthält die genaue Versionsnummer des ausführenden Perl-Interpreters. Diese Variable sollte nicht mehr verwendet werden. Stattdessen wird zu $^V geraten.

                      Das wars aber nicht. Mit $^V läuft es genau so falsch. Das Problem war, wie Klugscheiser schrieb das Ausgeben von $PERL_VERSION.

                      1. Hallo,

                        $]     Enthält die genaue Versionsnummer des ausführenden Perl-Interpreters. Diese Variable sollte nicht mehr verwendet werden. Stattdessen wird zu $^V geraten.
                        Das wars aber nicht. Mit $^V läuft es genau so falsch. Das Problem war, wie Klugscheiser schrieb das Ausgeben von $PERL_VERSION.

                        Danke für die Rückmeldung.
                        (Komisch ist es trotzdem, weil bei mir läuft das.)

                        Grüße
                        Thomas

  2. Hallo,

    in Kapitel "Vordefinierte Variablen in Perl" steht das untenstehende Beispiel.
    Beim Start auf meinem Server kommt ein Fenster
    'Sie möchten folgende Datei herunterladen .....".

    Wenn ich die Zeile "print Versionsnummer ..." weglasse, läuft das Skript!
    Was an der Zeile (oder an meinem lokalen Server) falsch ist, kann ich als Anfänger leider nicht feststellen.

    Versuche statt der Zeile:

    print "Versionsnummer des Perl-Interpreter:  $] oder $PERL_VERSION \n";

    diese zu verwenden:

    print "Versionsnummer des Perl-Interpreter:  $^V oder $PERL_VERSION \n";

    Grüße
    Thomas