El módulo Inline proporciona los medios para realizar las pasarelas entre el lenguaje Perl y otro lenguaje de programación. En particular Inline::C facilita la integración entre código C y código Perl. Veamos un ejemplo:
$ cat -n hcfinline.pl
 1  #!/usr/local/bin/perl -w
 2  use strict;
 3  use Inline 'C';
 4
 5  print hcf( 20, 10 ), "\n";
 6  print hcf( 12, 9 ), "\n";
 7  print hcf( 18, 12 ), "\n";
 8
 9  __END__
10  __C__
11
12  int hcf(int x, int y) {
13    int t;
14
15    if (y > x) {
16      t = x; x = y; y = t;
17    }
18    if (x == y) return x;
19    while (y) {
20      t = x;
21      x = y;
22      y = t % y;
23    }
24    return x;
25  }
El código C puede almacenarse dentro del fichero  DATA  (esto es,
a partir de la aparición del marcador __END__
en una sección determinada por el marcador __C__.
También puede guardarse en una cadena ordinaria que es pasada a 
Inline::C:
$ cat -n shcfinline.pl
 1  #!/usr/local/bin/perl -w
 2  use strict;
 3  use Inline 'C' => q{
 4    int hcf(int x, int y) {
 5      int t;
 6
 7      if (y > x) {
 8        t = x; x = y; y = t;
 9      }
10      if (x == y) return x;
11      while (y) {
12        t = x;
13        x = y;
14        y = t % y;
15      }
16      return x;
17    }
18  };
19
20  print hcf( 20, 10 ), "\n";
21  print hcf( 12, 9 ), "\n";
22  print hcf( 18, 12 ), "\n";
Esta segunda forma es preferible a la hora de realizar la práctica.
Ejecutémos dos veces el ejemplo y cronometremos los tiempos de ejecución:
$ time shcfinline.pl 10 3 6 real 0m1.797s user 0m1.520s sys 0m0.250s $ time shcfinline.pl 10 3 6 real 0m0.065s user 0m0.060s sys 0m0.010sVemos que la segunda vez tarda menos que la primera. Esto es así porque la primera vez Inline genera una librería dinámica que - por defecto - se guarda en el subdirectorio
__Inline:
$ ls -ltr | tail -1
drwxr-xr-x  4 lhp lhp 4096 2007-05-31 07:42 _Inline
$ tree _Inline/
_Inline/
|-- build
|-- config
`-- lib
    `-- auto
        `-- shcfinline_pl_677d
            |-- shcfinline_pl_677d.bs
            |-- shcfinline_pl_677d.inl
            `-- shcfinline_pl_677d.so
4 directories, 4 files
Además genera el código de traducción  de las llamadas desde 
Perl a las funciones C.
Durante las ejecuciones posteriores Inline comprueba
que el código fuente no ha cambiado. Si es así carga la librería dinámica
generada.
Casiano Rodríguez León
