2012-08-06 23 views
8

Estoy aprendiendo perl Inline :: Python library. En el ejemplo de la página web del CPAN, tenemosPerl Inline :: Módulo Python, cómo poner código en una cadena

print "9 + 16 = ", add(9, 16), "\n"; 
    print "9 - 16 = ", subtract(9, 16), "\n"; 

    use Inline Python => <<'END_OF_PYTHON_CODE'; 
    def add(x,y): 
     return x + y 

    def subtract(x,y): 
     return x - y 

    END_OF_PYTHON_CODE 

es posible poner el código Python en cadena para que pueda crear el código Python en el tiempo de ejecución? Por ejemplo, algo como:

my $python_code = " 
def add(x,y): 
    return x + y 
"; 
print $python_code; 
use Inline Python => "$python_code"; 
print "9 + 16 = ", add(9, 16), "\n"; 

Tenemos un proyectos que dinámicamente creará funciones de python en el tiempo de ejecución. Y queremos llamar a estas funciones. ¿Es py_eval() el camino a seguir? Gracias por adelantado.

+0

¿Está incorporación de un intérprete de Python? –

+0

Sí, más o menos. Nuestro programa perl necesita ejecutar funciones de Python que se crean en el tiempo de ejecución. – biajee

Respuesta

4

Sin experiencia con Inline::Python, pero con Inline::Cyou can use the bind function to set code at runtime, así que tal vez esto funcionará:

my $python_code = " 
def add(x,y): 
    return x + y 
"; 
print $python_code; 
Inline->bind(Python => $python_code); 
print "9 + 16 = ", add(9, 16), "\n"; 
+0

Tienes razón. Esto funciona. Muchas gracias mafia. – biajee

Cuestiones relacionadas