2007
01.21

En un proyecto en el que estoy trabajando, necesito llamar desde Python a antiguas funciones en Perl hasta que sean refactorizadas (convertidas) a Python para tener todo el sistema coherente.

Un amigo me habló de PyPerl pero actualmente está abandonado. :(

Suponte que tengas un módulo de perl, llamado mylib.pl y que contenga algo como:

sub myfunc
{
    my ($a, $b) = @_;
    ...
    ...

    return result;
}

Lo que queríamos era llamar a la función myfunc desde python, sin tener que reescribirla. Así que ideé una forma de llamar funciones de perl desde python usando decoradores, haciendo algo como:

from perlfunc import perlfunc, perlreq, perl5lib

@perlfunc
@perlreq('mylib.pl')
def myfunc(a, b):
    pass

Esto llamaría desde python a la función myfunc en perl (con los parámetros a y b) que tengas definida en el módulo mylib.pl. Se pueden usar listas (y matrices como listas de listas) y diccionarios, que serán transformados convenientemente a perl.

Lo cierto es que funciona muy bien. :)
Tiene licencia GPL, y lo puedes descargar aquí: perlfunc.py

  • Share/Bookmark

5 comentarios hasta ahora

Escribe tu Comentario
  1. Carlyle: Nice to hear that! :) Perhaps it came to late for us (at least in this project). :roll:

  2. FWIW, http://wiki.python.org/moin/PyPerl
    says that
    “* Recent patches by Per Øyvind Karlsen with fixes for python 2.5 as well as some other useful stuff is available at Mandriva SVN”
    so at least one persons is working on it (good!)

  3. Just a test to see the protection running !

  4. Y no veas de la de apuros que me ha sacado. :P
    Un abrazo.

  5. Estos frikis picacodigos ;)

Powered by WP Hashcash