PICA: Perl Installation and Configuration Agent: Una solución inteligente para administración de sistemas | ||
---|---|---|
Prev | Next |
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:
Hay dos primitivas para incluir programas en Perl, para generar dinámicamente partes de los ficheros.
Las expresiones que ponemos en las condiciones y similares son Perl puro (que se evalúan), que pueden consultar el espacio de nombres de la aplicación para consultar ciertas variables del estado interno, como el fichero o la máquina actual que se están procesando, etc.
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