Thomas N: Unter MS-DOS, "perl hallo.pl" will nicht, wie teste ob perl OK?

Hallo,

hab Anfänger-Perl-Frust, oder vielleicht eher MS-DOS/Windows?

Ich blick nicht was ich zu gern verstehen würde.

  • Hab erfolgreich Sambar installiert, da läuft auch mein "Hallo Welt.pl"

Aber ich verstehe nicht warum es läuft, unter MS-DOS (habe noch Win95b) läuft es nämlich nicht.
Der Sambar5.0 hat ja - wenn ich es richtig verstehe - von Haus aus Perl installiert.
Ich weiss nicht wie ich testen könnte, ob ich unter Windows Perl richtig installiert habe?

Das Script:
#!d:\programme3\perl_5.6.1\bin\perl.exe
print "hallo, welt!\n";

Wie gesagt, über Sambar5.0 tut es.

Unter MS-DOS:

HALLO    PL             64  16.05.02  14:58 hallo.pl
         1 Datei(en)                    64 Bytes
         7 Verzeichnis(se)        9.575,27 MB frei

D:\1>perl hallo.pl
Befehl oder Dateiname nicht gefunden.

D:\1>perl HALLO.PL
Befehl oder Dateiname nicht gefunden.
-----------

Was mach ich falsch, bzw wie kann ich testen, ob ich Perl unter Windows richtig installiert habe?
Und warum brauch ich Perl zweimal?

Viele Grüsse
Thomas N

  1. Hallo Thomas

    Das Script:
    #!d:\programme3\perl_5.6.1\bin\perl.exe
    print "hallo, welt!\n";

    Wie gesagt, über Sambar5.0 tut es.

    Weil im Script der Pfad zu perl.exe drin steht, ruft Sambar den Interpreter richtig auf.

    Ich nehme mal an, daß Dein Script im Verzeichnis d:\1 steht (ungewöhnliches Verzeichnis):

    D:\1>perl hallo.pl
    Befehl oder Dateiname nicht gefunden.

    Ändere den Aufruf mal in:
    D:\1>d:\programme3\perl_5.6.1\bin\perl.exe hallo.pl

    Besser ist natürlich, wenn Du die Pfadangabe, die in der autoexec.bat festgelegt wird, um den Pfad zu perl.exe erweiterst. Also öffne die Datei mit einem Text-Editor (z.B. notepad.exe) und ergänze die Zeile, die mit 'path=' anfängt um folgendes (ohne die Gänsefüßchen) ";d:\programme3\perl_5.6.1\bin". Das Semikolon trennt die einzelnen Pfadangaben voneinander. Dann schließe die Datei und boote.
    Danach sollte der Aufruf, so wie du ihn probiert hast, funktionieren. Ggf. fehlt in der autoexec.bat noch folgende Zeile: "PERL5LIB=d:\programme3\perl_5.6.1\LIB". Die wirst Du aber noch (!) nicht brauchen.
    Ob der Pfad gesetzt ist, erfährst Du, wenn Du in der MS-DOS-Eingabeaufforderung den Befel 'path' eintippst.

    Um Dir noch das eintippen von perl.exe zu sparen, kannst Du unter START-->Einstellungen-->Ordneroptionen-->Dateitypen einen neuen Typ für .pl-Dateien anlegen und den mit dem Perlinterpreter verknüpfen.

    Gruß Frank

    1. Hallo Frank,

      Du bist genial!

      So funktioniert es:
      D:\1>d:\programme3\perl_5.6.1\bin\perl.exe hallo.pl
      hallo, welt!

      Nun ist es aber mit meinem Verständnis noch nicht allzuweit gediehen.

      1. nehme jetzt an, dass alles richtig installiert ist, hatte Bedenken, dass da von diesen Microsoft-Zusatz-Dateien
         für Perl etwas schiefgelaufen sein könnte, kann ich das getrost vergessen?
      2. Du schriebst, ich solle ;d:\programme3\perl_5.6.1\bin\ in die autoexec.bat schreiben, ich habe sie unten mal gepostet
         weil ich damit nicht sicher bin, wo genau ich es einfügen soll.
         Warum geht hier der Pfad nur bis "bin" und nicht auch bis "bin/perl.exe" ?
         Wie im Script-Pfad und beim Aufruf über DOS?
      3. wenn ich zum Perlinterpreter verknüpfe - davon wurde uns im Kurs abgeraten, wir sollten zu notepad oder
         PERLBuilder verknüpfen - dann sollte ich in der MS-DOS-Eingabeaufforderung nur hallo.pl eingeben müssen, richtig?
         das geht nämlich nicht:
      D:\1>hallo.pl
      Befehl oder Dateiname nicht gefunden.

      4. warum gibt es unter "bin" eigentlich zwei verschiedene perl.exe's (perl5.6.1.exe und perl.exe)?

      Also jedenfalls bis hierhin, und vielen Dank
      Grüsse
      Thomas N

      ---------------------------------------------
      C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD000 /L:E
      mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi)
      mode con codepage select=850
      keyb gr,,C:\WINDOWS\COMMAND\keyboard.sys
      SET QTJava=C:\WINDOWS\SYSTEM\QTJava.zip
      SET CLASSPATH=%QTJava%;
      SET PATH=C:\PROGRA~1\ULTRAE~1;%PATH%

      rem insert by Sun Microsystems setup
      set DBROOT=C:\Programme\Adabas
      rem insert by Sun Microsystems setup
      set DBWORK=C:\Programme\Adabas\sql
      rem insert by Sun Microsystems setup
      set DBCONFIG=C:\Programme\Adabas\sql
      rem insert by Sun Microsystems setup
      set path=%path%;C:\Programme\Adabas\bin
      rem insert by Sun Microsystems setup
      set path=%path%;C:\Programme\Adabas\pgm
      rem insert by Sun Microsystems setup
      set DBROOT=D:\programme3\adabas_d
      rem insert by Sun Microsystems setup
      set DBWORK=D:\programme3\adabas_d\sql
      rem insert by Sun Microsystems setup
      set DBCONFIG=D:\programme3\adabas_d\sql
      rem insert by Sun Microsystems setup
      set path=%path%;D:\programme3\adabas_d\bin
      rem insert by Sun Microsystems setup
      set path=%path%;D:\programme3\adabas_d\pgm

      1. Hi, ich antworte mal an Stelle von Frank,

        Du schriebst, ich solle ;d:\programme3\perl_5.6.1\bin\ in die autoexec.bat schreiben
        Warum geht hier der Pfad nur bis "bin" und nicht auch bis "bin/perl.exe" ?

        Weil der Pfad (eigentlich Suchpfad) nur eine Liste von Verzeichnissen enthält. Wenn man eine ausführbare Datei in den Prompt eintippt, z.B.:

        edit

        dann klappert deine Shell (command.com) nacheinander den Pfad ab und guckt, ob es eine edit.bat, edit.com oder edit.exe in den jeweiligen Verzeichnissen gibt. Der erste Fund wird dann ausgeführt. Falls die Datei nicht gefunden wird und es auch kein in die Shell eingebauter Befehl wie dir ist, gibt's die Fehlermeldung.

        das geht nämlich nicht:
        D:\1>hallo.pl
        Befehl oder Dateiname nicht gefunden.

        Das geht nur in Unix. Da kann man jede Datei ausführbar machen, indem man ihr das Ausführbar-Attribut zuweist. In Windows sind bloß die 3 Endungen maßgeblich. Ist natürlich ein beklopptes Design, aber das konnte man bloß in Windows3 in der system.ini ändern, AFAIK geht das nicht mehr.
        Du musst folgendes machen:

        start hello.pl

        Das ruft einen Stub auf, welches wie der Explorer in der Registry nachguckt, womit .pl-Dateien verknüpft sind und diese Anwendung startet.

        1. warum gibt es unter "bin" eigentlich zwei verschiedene perl.exe's (perl5.6.1.exe und perl.exe)?

        In Unix steht da bloß eine ausführbare Datei sowie eine Querverbindung auf Dateisystemebene dazu. In Windows kann man das nicht machen, weil Windows' Verknüpfungen auch beklopptes Design sind. Mit Win-Verknüpfungen kann man längst nicht so viel machen wie mit Symlinks, deswegen ist die Datei sicherheitshalber doppelt da. Es handelt sich also um ein zu-kurz-Kommen des Dateisystems: DOS und Windows kennen keine Symlinks.

        Ich habe mir mal die Freiheit genommen, deine autoexec aufzuräumen. Du scheinst Adabas doppelt installiert zu haben (einmal fehlgeschlagen, vielleicht? oder nicht korrekt deinstalliert?).

        --------------------------
        lh c:\windows\command\mscdex.exe /d:mscd000 /l:e
        lh c:\windows\command\keyb.com gr,437,c:\windows\command\keybrd2.sys
        set dbroot=d:\programme3\adabas_d
        set dbwork=d:\programme3\adabas_d\sql
        set dbconfig=d:\programme3\adabas_d\sql
        set qtjava=c:\windows\system\qtjava.zip
        set classpath=%qtjava%
        set path=c:\progra~1\ultrae~1;d:\programme3\adabas_d\bin;d:\programme3\adabas_d\pgm;d:\programme3\perl_5.6.1\bin
        --------------------------

        Du brauchst dringend Nachhilfe in DOS. Schnapp dir deine Windows-CD, kopiere die Dateien aus dem Verzeichnis oldmsdos nach c:\windows\command\ ohne Überschreiben von doppelten Namen, dann rufe vom Prompt die Hilfe auf:

        help

        Dann arbeite dich durch ein Paar Themen und Befehle, beispielsweise path oder set. Ist auf deutsch und anfängergerecht aufgemacht und trotzdem informativ (hurrah Microsoft). Du kannst Themen auch direkt aufrufen:

        help keyb

        Gruß und so

        1. n'Abend

          Hi, ich antworte mal an Stelle von Frank,

          Danke!

          das geht nämlich nicht:
          D:\1>hallo.pl
          Befehl oder Dateiname nicht gefunden.
          Das geht nur in Unix. Da kann man jede Datei ausführbar machen, indem man ihr das Ausführbar-Attribut zuweist. In Windows sind bloß die 3 Endungen maßgeblich. Ist natürlich ein beklopptes Design, aber das konnte man bloß in Windows3 in der system.ini ändern, AFAIK geht das nicht mehr.

          Da muß ich wiedersprechen! Zumindest unter meinem WinNT hier geht es sehr wohl, einfach hallo.pl einzutippen. Kann sein, daß WinNT einen anderen command.com nutzt. Auf Win9x-Tests muß ich verzichten, ich habe gerade keins da.

          Gruß Frank

          1. Hallo,

            Kann sein, daß WinNT einen anderen command.com nutzt.

            Ja, nämlich cmd.exe;-)
            Und diese Shell ist dem alten command.com um einiges überlegen, auch wenn sie bespielsweise der bash nicht das Wasser reichen kann.

            Grüße
              Klaus

            1. Hallo,

              Ja, nämlich cmd.exe;-)
              Und diese Shell ist dem alten command.com um einiges überlegen, auch wenn sie bespielsweise der bash nicht das Wasser reichen kann.

              Dumme Frage: läuft cmd.exe auch unter Win9x? Kann man den so einfach kopieren?

              Gruß Frank

              1. Hallo.

                läuft cmd.exe auch unter Win9x? Kann man den so einfach kopieren?

                Nein. cmd wurde für den NT-Kernel geschrieben.

                Wenn du eine bessere Shell als command suchst:

                * bash http://cygwin.com/
                * 4dos http://www.jpsoft.com/4dosdes.htm ; ältere Versionen:http://filesearch.ru/cgi-bin/s?q=4dos

          2. Hi!

            Da muß ich wiedersprechen! Zumindest unter meinem WinNT hier geht es sehr wohl, einfach hallo.pl einzutippen. Kann sein, daß WinNT einen anderen command.com nutzt. Auf Win9x-Tests muß ich verzichten, ich habe gerade keins da.

            Und wenn man .pl noch zur Variable PATHEXT dazupackt, kann man sogar die Erweiterung beim Namen weglassen.

            C:> set PATHEXT=%PATHEXT%;.PL
            C:> hallo
            hallo, welt!

            C:> _

            So long

            --
            Die Aggressivitaet kommt vom Heavy Metal!!! CounterStrike ist doch nur zum Runterkommen!!!!!

        2. Hi, ich antworte mal an Stelle von Frank,

          Nur zu!

          das geht nämlich nicht:
          D:\1>hallo.pl
          Befehl oder Dateiname nicht gefunden.
          Das geht nur in Unix. Da kann man jede Datei ausführbar machen, indem man ihr das Ausführbar-Attribut zuweist. In Windows sind bloß die 3 Endungen maßgeblich. Ist natürlich ein beklopptes Design, aber das konnte man bloß in Windows3 in der system.ini ändern, AFAIK geht das nicht mehr.
          Du musst folgendes machen:
          start hello.pl

          Das scheint nun zu gehen, nur sehr schnell, dass ich es nicht sehen kann!
          Kann man das sich öffnende Dos-Fenster auch dabehalten, um zu sehn was drinne steht?
          Mit diesem Script:

          print "Wen möchten Sie grüßen? : \n";
          $input = <STDIN>;
          print "Viele Grüße an $input\n";

          bleibt das Dos-Fenster wenigstens bei der Eingabe stehen, aber die Grüsse seh ich natürlich nicht.

          Ich habe mir mal die Freiheit genommen, deine autoexec aufzuräumen.

          Vielen Dank!! Hab Deine Angaben so für meine autoexec übernommen, nur hab ich nun in der DOS-Konsole meine
          Zeichenbelegung etwas durcheinander[!!"§$%&/()=?`*'_:;] Den Doppelpunkt gibts gar nicht mehr!
          ist das diese Einstellung?
          keyb gr,,C:\WINDOWS\COMMAND\keyboard.sys
          die hat ich ja vorher? Aber wenn ich die rein tue gehts trotzdem nicht mehr!? :-(
          Wie kann man das wieder änder???
          Und was bedeutet "lh", dass hat ich vorher ja auch nicht?

          Du scheinst Adabas doppelt installiert zu haben (einmal fehlgeschlagen, vielleicht? oder nicht korrekt deinstalliert?).

          Mit Adabas, dass kann gut sein. :-)


          lh c:\windows\command\mscdex.exe /d:mscd000 /l:e
          lh c:\windows\command\keyb.com gr,437,c:\windows\command\keybrd2.sys
          set dbroot=d:\programme3\adabas_d
          set dbwork=d:\programme3\adabas_d\sql
          set dbconfig=d:\programme3\adabas_d\sql
          set qtjava=c:\windows\system\qtjava.zip
          set classpath=%qtjava%
          set path=c:\progra~1\ultrae~1;d:\programme3\adabas_d\bin;d:\programme3\adabas_d\pgm;d:\programme3\perl_5.6.1\bin

          Du brauchst dringend Nachhilfe in DOS. Schnapp dir deine Windows-CD, kopiere die Dateien aus dem Verzeichnis
          oldmsdos nach c:\windows\command\ ohne Überschreiben von doppelten Namen, dann rufe vom Prompt die Hilfe auf:

          help
          Dann arbeite dich durch ein Paar Themen und Befehle, beispielsweise path oder set.
          Ist auf deutsch und anfängergerecht aufgemacht und trotzdem informativ (hurrah Microsoft).
          Du kannst Themen auch direkt aufrufen:
          help keyb

          Das hat wunderbar geklappt, super! :-))

          Viel Grüsse
          Thomas N