G. Thomas: Perl kompilieren?

Hi,
gibt es eine Möglichkeit Perlscripts wie bei C/C++ zu kompilieren, dass man am Ende ein exe Datei erhält? Wenn ja, muß dann auf dem anderem Rechner trotzdem der Perlinterpreter installiert sein?

danke

  1. Hi,
    gibt es eine Möglichkeit Perlscripts wie bei C/C++ zu kompilieren, dass man am Ende ein exe Datei erhält? Wenn ja, muß dann auf dem anderem Rechner trotzdem der Perlinterpreter installiert sein?

    danke

    Unter Win32: es gibt einen Compiler von ActiveState - check die Homepage http://www.activestate.com

    Unter U*x: Ein C-Code Generator ist im (frühen?) Alphastadium. Check mal perl.com für weitere Informationen

    1. Hallo Leute,

      ich habe schnell mal in meinem schlauen Buch (perl in nutshell) geblättert. Unter "language basics/the perl compiler" steht da in etwa folgendes:

      • ein "native-code" compiler ist ab Perl 5.005 teil der Standard Perl Distribution, als Erweiterungsmodul B.
      • soll aber noch beta sein.
      • kann einiges. z.B. Script in platform-unabhängigen Byte-Code umwandeln, Perlscript nach C-code umwandeln, deparsen,...

      Bei ActivePerl ist das ganze gut dokumentiert, unter "Module Docs / B" in der HTML-Hilfe.

      viele Grüße
      ottmar

  2. gibt es eine Möglichkeit Perlscripts wie bei C/C++ zu kompilieren

    Hi Thomas,

    Perl ist eine interpretierte Programmiersprache.
    Sie kann nicht kompiliert werden.
    Ein Perl Interpreter parst (lesen und verstehen) immer den Quelltext eines Perlprogrammes und wandelt es in die Maschienensprache der jeweiligen Umgebung (Prozessortyp, Betriebsystem) um.
    Desweiteren interpretier ein Perl Interpreter das Prorgamm zur Laufzeit und nicht vorher, so dass man es auch nicht vorher interpetieren könnte (auf die jeweilige Maschiene) und dann so wie als *.exe starten könnte.

    Perl ist halt eine interpretiere Programmiersprache, die ihre Vor- und Nachteile hat. Sie ist nicht zum compilieren gedacht.

    Wenn du eine complierte Version deines Perlprogrammes haben willst, dann schreibe es halt in ein C-Programm um. Oder lass es von jemanden machen oder vieleicht gubt es auch Konverter, die einfache Perlprogramme in C-Programme umwandeln.

    Ich hoffe, dass ich dir den Sachverhalt klahr machen konnte.

    ALEX

    1. Hallo!

      Perl ist eine interpretierte Programmiersprache.
      Sie kann nicht kompiliert werden.

      Wieso soll eine interpretierende Programmiersprache nicht kompiliert werden koennen? Ich muss doch nur einen entsprechenden Compiler schreiben. Basic entstand auch als Interpretersprache, und irgendwann hat mal jemand angefangen, Compiler dafuer zu schreiben (unter DOS gab's frueher mal Power Basic).

      Ein Perl Interpreter parst (lesen und verstehen) immer den Quelltext eines Perlprogrammes und wandelt es in die Maschienensprache der jeweiligen Umgebung (Prozessortyp, Betriebsystem) um.
      Desweiteren interpretier ein Perl Interpreter das Prorgamm zur Laufzeit und nicht vorher, so dass man es auch nicht vorher interpetieren könnte (auf die jeweilige Maschiene) und dann so wie als *.exe starten könnte.

      Vorsicht. Er wandelt es eben nicht in Maschinensprache um (dann muesste er es ja nicht mehr interpretieren, denn er haette es ja dann kompiliert). Stimmt aber, dass er zuerst mal parst. Dann wird der Interpreter selbst fuer die Ausfuehrung sorgen, d.h. die Perl-Statements werden in interne Funktionsaufrufe (innerhalb des Interpreters) umgesetzt. Und der Interpreter selbst ist ja ein kompiliertes Programm.

      Perl ist halt eine interpretiere Programmiersprache, die ihre Vor- und Nachteile hat. Sie ist nicht zum compilieren gedacht.

      Wenn Du es so ausdrueckst, stimme ich Dir wiederum zu. Man kann es theoretisch zwar kompilieren, aber es ist ziemlich aufwendig. Das gesamte Perl-Runtime-System muss eingebunden werden, und sogar der Parser/Compiler selbst, denn Perl kennt ein eval() Statement, muss also eine dynamische zusammengesetzte Anweisung zur Laufzeit analysieren und ausfuehren koennen. Nach meiner Einschaetzung wuerde das der Einfachheit halber darauf hinauslaufen, einfach den Perlinterpreter zu nehmen und zusammen mit dem Perlscript in eine EXE zu linken. Das eingelinkte Script dient dann einfach als Datenfutter fuer den Interpreter. Und in der Tat geht ein Sharewareprogamm namens perl2exe vor (sollte in jeder Suchmaschine zu finden sein). Dieses erstellt eine lauffaehige EXE, indem es Interpreter, Script und noch einige andere Sachen einfach zusammenschnuert. Wenn ich bedenkt, dass das alles ist, was das Ding tut, ist fuer mich der Preis von $40 oder $50 absolut nicht nachvollziehbar.

      Calocybe

      1. Nach meiner Einschaetzung wuerde das der Einfachheit halber darauf hinauslaufen, einfach den Perlinterpreter zu nehmen und zusammen mit dem Perlscript in eine EXE zu linken.

        ... was gar nicht so schlimm ist, wenn die internen Perl-Funktionen als shared library auf dem Server liegen. Dann werden die Binaries der kompilierten Skripte wenigstens nicht so groß ...

        Wenn ich bedenkt, dass das alles ist, was das Ding tut, ist fuer mich der Preis von $40 oder $50 absolut nicht nachvollziehbar.

        "Gewußt, wie", sagte der Handwerker ... ;-)

        1. Hi!

          ... was gar nicht so schlimm ist, wenn die internen Perl-Funktionen als shared library auf dem Server liegen. Dann werden die Binaries der kompilierten Skripte wenigstens nicht so groß ...

          Stimmt, auch bei der Windows-Distribution liegt der eigentliche Interpreter in der perlcore.dll. Allerdings ist der Hauptzweck des Bindens in eine executable imho das Ausfuehren auf einer Maschine ohne Perl-Interpreter. Windozer stehen solchen Kommandozeilenzeug ja eher argwoehnisch gegenueber, dabei ist das eines der Tools, die ihrer Maschine mal zu ungeahnten Faehigkeiten verhelfen koennte (Stichwort Automatisierung). Genau deshalb musste ich das perl2exe bei uns in der Firma auch verwenden.

          Calocybe