Para llamar desde perl a C, normalmente compila una biblioteca compartida, no estática, desde su código c, y luego la carga en el intérprete Perl utilizando el módulo XSLoader
o DynaLoader
.
Para poder llamar al código C desde el espacio perl, hay muchas formas. El más común es escribir algo llamado XSUB
s, que tienen una interfaz perl-side, asignar las convenciones de llamadas perl a C-convenciones de llamadas y llamar a las funciones C. Esos XSUB generalmente también están vinculados a la biblioteca compartida que se cargará en Perl y se escribirá en un lenguaje llamado XS, que está ampliamente documentado en perlxs y perlxstut.
También hay otras formas de construir esa capa de envoltura, como varios generadores de código XS, así como SWIG. Pero también puede llamar a las funciones C directamente usando un NCI
. Perl también tiene muchos de esos. El P5NCI
es un ejemplo de eso, el módulo ctypes desarrollado en el programa Google Summer of Code de este año es otro.
Otra técnica relacionada que probablemente debería mencionarse aquí es Inline::C
, y los otros módulos de la familia Inline. Le permiten escribir código en otros idiomas directamente en perl y llamar a él. Debajo del capó, Inline :: C solo crea código XS y carga el resultado de eso en el intérprete.
[¿Cómo puedo acceder a los archivos de una biblioteca en Perl?] (Http: // stackoverflow.com/q/3733346) – daxim
Si solo quiere ejecutar un poco de código C desde perl, compilarlo como un programa de C independiente y llamarlo por la línea de comando puede funcionar :) O tal vez algo como gearman podría ser útil. –