Variables
predefinidas
Las siguientes variables tienen un especial significado
para el lenguaje Perl. Estas variables se pueden clasificar en tres tipos:
1. De fichero.
Estas variables contienen algunos valores perteneciente
la manejador de ficheros seleccionado actualmente. Cada manjador de fichero
necesita su propio conjunto de valores. Cuando seleccionamos otro manejador de
fichero, el manejador de fichero anterior mantiene sus valores pero las
variables reflejarán ahora los valores del nuevo. Los variables
predefinidas de fichero son las siguientes:
- $%: Número de página del
canal de salida actual.
- $=: Tamaño de página del
canal de salida actual.
- $- : Número de líneas
restantes en la página del canal de salida actual.
- $|: Si no es cero, fuerza a vaciar el
buffer después de cada operación de escritura.
- $~: Contiene el nombre del formato o
report definido para la salida actual.
- $^: Es el nombre del formato o report de
la cabecera definido para la salida actual.
2. Locales.
Estas variables son locales al bloque de código
actual. Las variables locales predefinidas son las siguientes:
- $1...$9:
Contiene la subcadena desde el correspondiente al conjunto de
paréntesis en la última cadena comparada con éxito.
- $&: Representa el valor de la
última cadena de caracteres comparada con éxito.
- $`y $’: Estos dos términos
se utilizan conjuntamente para separar cadenas de caracteres comparadas con
éxito. ` es la anterior y ‘ es la siguiente. Ejemplo:
$linea = 'abcdefghi';
$linea =~ /def/;
print
"$`:$&:$'\n"; # imprime
abc:def:ghi
- $+: El último éxito de la
última búsqueda del último patrón. Es
útil cuando no se sabe que patrón de un conjunto fue el
encontrado.
3. Globales.
Estas variables tiene el mismo significado en todo el
script, así como en los paquetes que utiliza. Las variables globales
predefinidas son las siguientes:
- $_: Contiene el contenido del
último registro leído de un fichero. Es el argumento
predeterminado que poseen varias funciones y construcciones en Perl. Por
ejemplo:
if (/html/)
{
if ($linea =~ /html/) {
print
$_;
print $linea;
}
}
while
(<STDIN>){
while ($linea = <STDIN>){
print "escrito: ",
$_ print "escrito:
", $linea;
}
}
$_ =
"nom1&nom2";
$linea = "nom1&nom2";
@lista =
split(/&/); @lista =
split(/&/, $linea);
- $.: Contiene el número de la
última línea leída de un fichero.
- $/: Separador de campo para la entrada.
- $,: Separador de campo para la salida,
aplicable a print.
- $\: Separador de registro para la
salida, aplicable a print.
- $"": Como $, se aplica a
arrays en búsquedas de cadenas entre dobles comillas (cadenas que se
interpreten de la misma forma).
- $#: El formato de salida para mostrar
números.
- $$ : Es el número de proceso perl
del scripts que se esta ejecutando actualmente.
- $?: El valor de estado devuelto
por la última tubería (pipe) que se cerró, por el
comando ejecutado con el backquote (`\`) o por una operación del
sistema.
- $*: Puesto a 1 realiza búsquedas
en varias líneas con una misma cadena, a 0 para indicar al compilador
que las cadenas son de una única línea para optimizar
búsquedas.
- $[: Contiene el valor del primer
índice de una array de escalares, por defecto es 0.
- $]: Contiene la cadena mostrada cuando
se invoca "perl -v", es decir la versión del compilador,
etc. Puede ser útil para comprobar al comienzo del script, que la
versión del intérprete que ejecuta el script es la correcta.
- $;: Es el separador para emular arrays
multi-dimensionales.
- $!: Contiene el valor actual de ERRNO,
es decir, el último error acontecido.
- $0: Contiene el nombre del fichero que
hemos dado a nuestro perl script.
- $<: Uid real del proceso actual.
- $>: Uid efectivo del proceso actual.
- $@: Contiene el mensaje de error de
sintaxis de perl del último comando evaluado. Si es nulo quiere decir
que el último comando se ejecutó correctamente y estaba bien
escrito.
- $(: Gid real del proceso actual.
- $): Gid efectivo del proceso actual.
- @ARGV: Contiene los parámetros
pasados a nuestro script Perl. Por ejemplo:
# Lee argumentos de la
línea de comando y los lista.
$NumArg = $#ARGV; # Almacena el
número de argumentos
$Cuenta = 0;
while ($Cuenta <
$NumArg) {
print "Argumento0
",$Cuenta,"-->",$ARGV[$Cuenta],
"\n";
$Cuenta++;
}
- %ENV: Array asociativo que contiene las
variables de entorno bajo el que se ejecuta nuestro script Perl.
- $:: El conjunto actual de caracteres
tras los que una cadena se rompe para llenar los campos siguientes (que
empiecen con ^) en un formato.
- $^D: Los valores actuales de los flags
de depuración.
- $^F: El máximo descriptor de
fichero del sistema, normalmente 2. Los descriptores de fichero del sistema
son pasados a los procesos hijos, mientras que los superiores no. Durante
una apertura, los descriptores de fichero del sistema se guardan, incluso si
falla la operación.
- $^I: Contiene el valor actual de la
extensión del editor. Con undef se desactiva.
- $^L: Qué formato utilizar para
realizar un salto de línea. Por defecto: \f.
- $^P: Flags internos que el depurador
borra. Se puede desactivar el depurador borrándolos.
- $^T: El tiempo, en segundos,
transcurrido desde que el script comenzó a ejecutarse.
- $^X: El nombre con el que Perl se
ejecutó, argv[0].
- $ARGV: Contiene el nombre del fichero
actual cuando se lee de <ARGV> .
- @INC: El array INC contiene la lista de
lugares en donde buscar scripts en Perl para ser evaluados por el comando
"do EXPR" o "require". Contiene inicialmente los
argumentos de cualquier línea de comando -I , seguido de la
librería Perl por defecto, probablemente
"/usr/local/lib/perl", y un punto ".",para representar
el directorio actual.
- %INC: El array asociativo INC contiene
entradas para cada nombre de fichero que ha sido incluido vía
"do" o "require". La clave es el nombre del fichero
especificado y el valor es la localización del fichero encontrado. El
comando "require" usa este array para determinar cuando un fichero
ha sido incluido.
- $ENV{expr}: Es un array asociativo que
contiene tu entorno actual. El entorno de los procesos hijo se puede cambiar
colocando un valor en este array.
- $SIG{expr}: Es otro array asociativo
usado para inicializar manejadores de señales para distintas
señales. Este array sólo contiene valores para las
señales inicializadas por el script.