$ cat inline_japh.pl #!/usr/bin/perl -w (@ARGV == 1) or die "Modo de uso:\n$0 string\n"; my ($n) = @ARGV; use Inline C; print JAxH($n); __END__ __C__ SV * JAxH(char *x) { return newSVpvf("Just Another %s Hacker\n",x); }En este ejemplo no se le pasa el código directamente mediante un documento HERE, sino que se buscará en el fichero
DATA
definido como el texto
a partir del terminal __END__
en la sección definida a partir del terminal
__C__
.
El tipo SV *
corresponde a puntero a un escalar Perl.
Un valor escalar Perl SV
puede ser de uno de cuatro tipos:
IV
)
NV
)
PV
)
SV
).
SV* newSViv(IV);
SV* newSVnv(double);
SV* newSVpv(const char*, int);
SV* newSVpvn(const char*, int);
SV* newSVpvf(const char*, ...);
SV* newSVsv(SV*);
perldoc
en los tópicos
perlguts
y perlapi
.
En este ejemplo hemos manejado explícitamente la conversión.
Los argumentos de newSVpvf
se procesan como los de sprintf
y la salida asi formateada es el resultado.
Ejecución:
$ ./inline_japh.pl Perl Just Another Perl Hacker $ ./inline_japh.pl C Just Another C Hacker
Casiano Rodríguez León