Robert Allerstorfer: Unix&Win32 -kompatibler Perl-Pfad

hallo,

perl-cgi-scripts brauchen unter einer unix-umgebung in der ersten zeile den pfad zu perl, also zB.
#!/usr/bin/perl

wenn ich nun perl-scripts unter win32 für eine unix-umgebung schreibe, wäre es praktisch,
diese zeile nicht immer anzupassen, also zB. auf
#!D:/Programme/Perl/bin/perl

Ich hab in diesem forum mal gelesen, dass die Unix-Zeile auch unter win32 funktioniert, sofern der perl-pfad in der PATH-umgebungsvariable eingetragen ist.

Bei meinem NT4 und Perl 5.00502 funktioniert das aber leider nicht!
daher meine frage: gehts doch nicht oder muss ich noch was beachten?

lg,
rob.

  1. hallo,

    perl-cgi-scripts brauchen unter einer unix-umgebung in der ersten zeile den pfad zu perl, also zB.
    #!/usr/bin/perl

    wenn ich nun perl-scripts unter win32 für eine unix-umgebung schreibe, wäre es praktisch,
    diese zeile nicht immer anzupassen, also zB. auf
    #!D:/Programme/Perl/bin/perl

    Ich hab in diesem forum mal gelesen, dass die Unix-Zeile auch unter win32 funktioniert, sofern der perl-pfad in der PATH-umgebungsvariable eingetragen ist.

    Bei meinem NT4 und Perl 5.00502 funktioniert das aber leider nicht!
    daher meine frage: gehts doch nicht oder muss ich noch was beachten?

    Ich bin mir nicht sicher, aber ich glaube, es geht, wenn du *.pl-Dateien in der Registry mit dem Perlinterpreter verknüpfst.

    1. Ich bin mir nicht sicher, aber ich glaube, es geht, wenn du *.pl-Dateien in der Registry mit dem Perlinterpreter verknüpfst.

      Das hab ich mir auch gedacht und habe deshalb  die dateierweiterungen pl und cgi mit perl.exe registrieren lassen, half aber nichts :-(

      rob.

      1. Ich bin mir nicht sicher, aber ich glaube, es geht, wenn du *.pl-Dateien in der Registry mit dem Perlinterpreter verknüpfst.

        Das hab ich mir auch gedacht und habe deshalb  die dateierweiterungen pl und cgi mit perl.exe registrieren lassen, half aber nichts :-(

        rob.

        kannst du ein skript per doppelklick, oder per Dosbox ausführen lassen? (ohne das perl davorzustellen)

        Hab mal gehört das einige HTTPd server die eigenschaft haben, sich den pfad zu perl.exe aus der registry auszulesen, egal was in der ersten zeile des Skriptes steht. Gilt natürlich nur für Win32.

        CU
        Rufinus

        1. Ich bin mir nicht sicher, aber ich glaube, es geht, wenn du *.pl-Dateien in der Registry mit dem Perlinterpreter verknüpfst.

          Das hab ich mir auch gedacht und habe deshalb  die dateierweiterungen pl und cgi mit perl.exe registrieren lassen, half aber nichts :-(

          rob.

          kannst du ein skript per doppelklick, oder per Dosbox ausführen lassen? (ohne das perl davorzustellen)

          Hab mal gehört das einige HTTPd server die eigenschaft haben, sich den pfad zu perl.exe aus der registry auszulesen, egal was in der ersten zeile des Skriptes steht. Gilt natürlich nur für Win32.

          Ich glaube beim Omni konnte man den Perlpfad einstellen. Bin mir aber nicht ganz sicher, da ich mit dem Server seit einem halben Jahr nicht mehr arbeite. Wenn der Server den Pfad kennt, sollte das #! ignoriert werden.

          1. Versuchs mal mit
            #! c:\perl\bin\perl.exe (oder passend geändertem Pfad)
            in der ersten Zeile des Skripts.
            Jedenfalls funktioniert das unter Nt und Apache.

            Freundliche Jrüße aus Berlin

      2. Hi!

        Ich bin mir nicht sicher, aber ich glaube, es geht, wenn du *.pl-Dateien in der Registry mit dem Perlinterpreter verknüpfst.

        Das hab ich mir auch gedacht und habe deshalb  die dateierweiterungen pl und cgi mit perl.exe registrieren lassen, half aber nichts :-(

        rob.

        Wenn Du einen Microsoft-Webserver benutzt (IIS oder auch PWS), liegt die Verknüpfung
        mit dem Perl-Skript an folgender Stelle in der Registry

        HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap

        (bin mir nicht 100%ig sicher, aber müßte in etwa stimmen. Notfalls die Registry nach
        ScriptMap durchsuchen...)

        Dort gehört z.B. für Perl ein Eintrag hin wie

        .pl       c:\bin\perl.exe %s %s

        Wichtig sind die beiden '%s'-Einträge am Ende, sonst wird der Perl-Interpreter
        ohne Skript gestartet.
        Die normale Registrierung der Endungen über HKEY_CLASSES_ROOT
        hat bei diesen Webservern keine Wirkung.

        Viele Grüße

        Andreas

        1. Wenn Du einen Microsoft-Webserver benutzt (IIS oder auch PWS), liegt die Verknüpfung
          mit dem Perl-Skript an folgender Stelle in der Registry

          HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap

          (bin mir nicht 100%ig sicher, aber müßte in etwa stimmen. Notfalls die Registry nach
          ScriptMap durchsuchen...)

          Dort gehört z.B. für Perl ein Eintrag hin wie

          .pl       c:\bin\perl.exe %s %s

          Wichtig sind die beiden '%s'-Einträge am Ende, sonst wird der Perl-Interpreter
          ohne Skript gestartet.
          Die normale Registrierung der Endungen über HKEY_CLASSES_ROOT
          hat bei diesen Webservern keine Wirkung.

          Viele Grüße

          Andreas

          Danke für die "Anteilnahme", mir geht es aber gerade um plattformunabhängige Kompatibilität, deshalb verwende ich ja Perl und keine Microsoft-Scriptsprachen. Detto beim Webserver: hier verwend ich ausschliesslich Apache, da es ihn für Win32 genauso wie für Unix gibt und ganz nebenbei der am meisten eingesetzte Webserver überhaupt ist.

          Ich habe den Dateityp-Erweiterungen pl und cgi für den Vorgang Open die Anwendung (...)\bin\Perl.exe "%1" %* zugewiesen, kann daher  Dateien der endung .cgi aus der Dosbox durch die alleinige eingabe ihres dateinamens mit perl ausführen lassen, als cgi-script funkts allerdings nicht :-(

          also gehts wahrscheinlich gar nicht ohne den richtigen pfad in der ersten zeile, oder?

          rob.