El PPP (Perl PreProcessor)

Como dijimos antes, todos los ficheros de configuración y de distribución de PICA se preprocesan antes de pasar por el analizador sintáctico. El preprocesador es una función escrita en Perl que hace las sustituciones necesarias en el fichero, generando uno nuevo ya preprocesado. Es muy parecido al preprocesador de C, pero con algunas diferencias importantes:

Veamos un ejemplo del preprocesador de PICA en acción, con uno de los ficheros de ejemplo que vienen en la distribución oficial:

Example 6. Ejemplo de fichero de distribución de PICA

Well, this is just a test file to see if it worked...

The value of the (local) variable myvar is '<# $myvar #>'
The value of the (local) variable mythirdvar is '<# $mythirdvar #>'


$myvar is <# ($myvar lt $mythirdvar)?'less':'greater' #> than $mythirdvar...

The crypt'ed version of $mythirdvar is '<# crypt $mythirdvar, 'aa' #>'.


Now, a little list from 0 to <# $limit #>:
#perl
my @result;
for (my $i = 0; $i < $limit; ++$i) {
        push @result, "$i\n";
}
@result;
#lrep
    

Suponiendo una definición como la siguiente:

Example 7. Ejemplo de definición del fichero pica-rules en objects.conf

file pica-rules {
    path = '<#$picaroot#>/rules';
    source = 'pica-rules';

    vars {
       myvar         = 'foo';
       limit         = '2';
       mythirdvar    = 'enough';
    }
}
    

el resultado del fichero, ya preprocesado, sería:

Example 8. Fichero preprocesado por PPP

Well, this is just a test file to see if it worked...

The value of the (local) variable myvar is 'foo'
The value of the (local) variable mythirdvar is 'enough'


$myvar is greater than $mythirdvar...

The crypt'ed version of $mythirdvar is 'aaVxUBNI9d3lI'.


Now, a little list from 0 to 2:
0
1