$ 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
