Variables especiales en PERL

El perl pone a disposición un conjunto bastante rico de variables especiales, o sea variables gestionadas directamente por el intérprete que contienen parámetros muy útiles.
En muchos casos puede ser útil pasar de los parámetros en la línea de instrucción a nuestro script Perl, por ejemplo con:

perl script.pl argumento

Esto se puede hacer perfectamente recordando que los parámetros que nosotros pasamos se almacenan en el array @ARGV (¡mayúscula!); este array es especial, pero se comporta exactamente como los demás array: $ARGV[0] indica el primer elemento del array, $#ARGV indica el último, etc. Veamos como ejemplo la «reescritura» de la instrucción ‘grep’ de los sistemas Unix: esta instrucción muestra las líneas del file de texto que contienen la cadena pasada como argumento al programa; por tanto, se escribirá un script que busca en el file de texto el argumento que nosotros pasamos a nuestro script.

#!/usr/bin/perl
$ARGV[0] || die «tienes que especificar la cadena de buscar\n»;
@file = `ls -1`;
chop(@file);
foreach $file (@file) {
-T $file || next;
open(FILE, «<$file») ||next;
while ($r = ) {
$r =~ /$ARGV[0]/ && print «$file: $r»;
}
close (IN);
}

Quizá el ejemplo resulta algo general, pero puede ser útil para ilustrar las potencialidades de @ARGV; no os preocupéis si no entendéis foreach, open y otros: más adelante se explicarán. Un ejemplo más simple puede ser:

#!/usr/local/bin/perl
$filename = $ARGV[0];
open(FILE, «< $filename») || die «¡Error!\n\n»;
while ($riga = ) {
print «$riga»;
}

En este ejemplo, el script espera que se le pase como argumento el nombre del file (segunda línea) sobhre el que ejecuta determinadas operaciones (en concreto, abre el file en lectura o, si no existe, se muestra un mensaje de error; después, imprime cada línea de ese file) Otro tipo de variables interesante es el de las variables de ambiente, que el intérprete toma del sistema y memoriza en el hash %ENV. Este hash contiene todas las variables de ambiente del sistema, que pueden ser seleccionadas con $ENV{variable}. Para ver su funcionamiento, hay que probar el siguiente script:

#!/usr/bin/perl
print «Path è: $ENV{PATH}\n»;

Obviamente, dicho script funciona con todas las variables y además es posible modificarlas (cuidado para no armar un lío). Para ver sobre qué variables podéis actuar, ejecutad:

$ set |more

que mostrará las variables con sus respectivos valores.

?