Philipp Hasenfratz: CGI/perl Compilierung

Beitrag lesen

Halihallo Christoph

perlcc funktioniert vielleicht nicht, aber es ist auch möglich einen Perlinterpreter über #include in die .c - Datei einzubinden und dann den Perlcode in eine .c Datei zu schreiben. Diese lässt sich dann ganz einfach über einen C-Compiler kompilieren (eben auch unter Windows) und dann hast du das selbe Resultat, wie wenn du perlcc anwendest.

sehr interessanter Vorschlag. Kannst du mal ein Beispiel herschreiben? Beispielsweise für ein Perl-Script dieser Art:

[...]

Ich habe leider keine Ahnung, wie das in der Praxis funktioniert. Leider habe ich bisher keine Erfahrungen damit gemacht (aber mein Interesse ist soeben erweckt ;)). Ich kann nur auf die perldoc perlembed verweisen, mit google hab ich bisher auch keine wirklich 'gscheiten Seiten gefunden. Ich glaube jedoch, dass Christian Kruse bestimmt helfen kann (ich glaube mal gelesen zu haben, dass sich Christian damit beschäftigt(e)).

Hab mal folgendes aus perldoc zusammengeschnippselt, jedoch nie getestet:

test.c:
    #include <EXTERN.h>
    #include <perl.h>
    static PerlInterpreter *my_perl;
    int main(int argc, char **argv, char **env)
    {
        char *args[] = { NULL };
        my_perl = perl_alloc();
        perl_construct(my_perl);
        perl_parse(my_perl, NULL, argc, argv, NULL);
        /*** skipping perl_run() ***/
        call_argv("test", G_DISCARD | G_NOARGS, args);
        perl_destruct(my_perl);
        perl_free(my_perl);
    }

dazu test.pl (Sourcecode in Perl, der durch call_argv eingelesen wird):

print 'Hello World, ich bin durch C aufgerufen worden :-)';

ich nehme jedoch an, dass der Code dann nicht in die kompilierte .exe eingebunden wird, sondern, dass er jedesmal versucht die Datei einzulesen und dann "real-time" zu parsen. Jedoch kann man der Prozedur perl_parse auch einen CHAR übergeben, welcher den Perl-Code enthält, somit wird der Perl-Source wirklich in die .exe Datei eingespeist.

Viele Grüsse

Philipp