Las Variables Especiales en Perl son aquellas que ya están definidas para realizar una función específica cuando se requiera. El factor diferenciador entre una Variable especial en Perl y un carácter aleatorio es el uso de signos de puntuación después de la variable, estos pueden ser @ , $ o % , etc., por ejemplo, $_ .
Perl Variables ayuda a un desarrollador a ahorrar tiempo, ya que generalmente son accesos directos a comandos más grandes en inglés.
Nota: La variable especial más común es $_ , que se usa para almacenar la entrada predeterminada.
Mire los siguientes códigos para tener una idea sobre esta variable especial:
# Providing some input while ( <> ) { # Printing the default value # stored in $_ print lc($_); }
Esto es lo mismo que
#!/usr/bin/perl while ( $abc = <> ) { print lc($abc); }
El siguiente es un ejemplo de la variable especial mencionada anteriormente en formato de trabajo:
#!/usr/bin/perl foreach ('Mango', 'Orange', 'Apple') { print($_); print("\n"); }
La salida del código anterior será:
Mango Orange Apple
Tipos de variables especiales
Las variables especiales se pueden categorizar según su uso y naturaleza. Estos son:
- Variables especiales de expresiones regulares
- Identificador de archivos Variables especiales
- Variables especiales escalares globales
- Variables especiales de array global
- Variables especiales de hash global
- Constantes especiales globales
- Manejadores de archivos especiales globales
Variables especiales de expresiones regulares
$dígito: la función principal de $digit
es mantener el texto coincidente en un conjunto similar de paréntesis en el último patrón coincidente. Sin embargo, los patrones que ya coincidieron en un bloque anidado no se cuentan.
$&, $MATCH: Se usa para encontrar la string que coincidió en la última búsqueda de patrón exitosa. Aunque Matched en un bloque oculto o encerrado en el conjunto actual no se cuentan. Esta es una variable de solo lectura y tiene un alcance dinámico.
#!/usr/bin/perl # Declaring local string local $_ = 'abcdefghi'; # Pattern matching /def/; # Printing the matched pattern print "$&\n";
def
$`, $PREMATCH: La string que precede a una string entre comillas se hizo coincidir con la última coincidencia de patrón exitosa. No cuenta ninguna coincidencia encerrada dentro de un bloque o eval encerrado por el bloque actual.
#!/usr/bin/perl # Declaring local string local $_ = 'abcdefghi'; # Pattern matching /def/; # Prematching the pattern print "$`:$&\n";
abc:def
$’, $POSTMATCH: la string que sigue a lo que coincidió con la última coincidencia de patrón exitosa sin contar las coincidencias ocultas dentro de un bloque o eval encerrado por el bloque actual.
#!/usr/bin/perl # Declaring local string local $_ = 'abcdefghi'; # Pattern matching /def/; # Postmatching the pattern print "$&:$'\n";
def:ghi
Identificador de archivos Variables especiales
$|, $OUTPUT_AUTOFLUSH
: si se establece en distinto de cero, esta variable fuerza un vaciado después de cada declaración de escritura o impresión en el canal de salida que se está seleccionando actualmente.
$%, $FORMAT_PAGE_NUMBER
: esta variable encuentra el canal de salida seleccionado actualmente y el número de página actual.
$=, $FORMAT_LINES_PER_PAGE
: Esta variable devuelve la longitud de la página actual, es decir, las líneas que se pueden imprimir del canal de salida seleccionado actualmente. El valor predeterminado para esta variable es 60.
$-, $FORMAT_LINES_LEFT
: Devuelve el número de líneas que quedan en la página del canal de salida actualmente seleccionado.
$~, $FORMAT_NAME
: El nombre del formato de informe actual para el canal de salida seleccionado actualmente. El valor predeterminado es el nombre del identificador de archivo. Por ejemplo, para STDOUT , el nombre de formato predeterminado sería el mismo STDOUT .
Variables especiales escalares globales
A continuación se menciona la lista de algunas de las variables especiales escalares. Y enumeró los nombres correspondientes en inglés junto con los nombres simbólicos.
$_, $ARG : se utiliza como variable predeterminada para aceptar entradas y realizar búsquedas de patrones, cuando se omite la variable.
$., $NR: contiene el número de línea del identificador de archivo actualizado por última vez. El valor se restablece a cero si el identificador de archivo está cerrado. Esta variable nunca moverá el puntero de búsqueda en el archivo.
$/, $RS : Este es el separador de registros de entrada. Si $/ no está definido, todo el archivo se lee como una sola entrada para el valor nulo, un espacio en blanco se considera como delimitador. Crea una nueva línea por defecto.
#!/usr/bin/perl local $/; # enable "slurp" mode local $_ = <FH>; # whole file now here s/\n[ \t]+/ /g;
‘$, ‘, $OFS: el comando Separador de campo de salida se utiliza cuando el usuario desea imprimir un valor predeterminado entre cada argumento del operador de impresión. El valor predeterminado para esta variable es undef .
$\, $ORS: el comando Separador de registro de salida se usa cuando el usuario desea imprimir el valor en el último de los argumentos del operador de impresión.
$!, $OS_ERROR o $ERRNO: arroja el valor actual del error no. variable si se usa en un contexto numérico.
Si se utiliza en un contexto de string, produce la string de error del sistema correspondiente.
if (open my $fh, "<", $filename) { # Here $! is meaningless. ... } else { # ONLY here is $! meaningful. ... # Already here $! might be meaningless. } # Since here we might have either success or failure, # $! is meaningless.
Aquí, se dice que no tiene sentido porque aquí esta variable ( $! ) no está relacionada con el resultado del open()
operador.
Variables especiales de array global
@ARGV: en un argumento de línea de comandos, @ARGV es la array que se usa para el script previsto. Generalmente es un valor menos que el número total de argumentos.
$ perl -e 'print join( ", ", @ARGV), "\n"' a b c a, b, c $ perl -e 'print join( ", ", @ARGV), "\n"' a "b c" d a, b c, d Here, a, b, c, d represents any numeric values.
@INC: esta variable se puede considerar como la array de ayuda incorporada que contiene la lista de lugares para encontrar scripts que serán evaluados por las construcciones do, require o use.
BEGIN { unshift @INC, "local/lib" }; use lib "local/lib";
@F: cuando usamos el interruptor de línea de comando -a, usamos @F para dividir e ingresar las líneas en una array. Esta array necesita un nombre de paquete completo porque es específico del paquete.
Variables especiales de hash global
%INC: esta variable contiene las entradas para el nombre de archivo de cada archivo que se ha incluido. Estas entradas se realizan a través de los operadores do
, require
o .use
%ENV: el hash que contiene su entorno actual.
#!/usr/bin/perl my $doo = 1; $ENV{'car'} = \$doo; if( ref $ENV{'car'} ) { print "Ver 5.18.0"; } else { print "Ver 5.18.0"; }
Ver 5.18.0
%SIG: para actualizar el valor de varias señales se utiliza este hash. Contiene manejadores de señales para señales.
Manejadores de archivos especiales globales
ARGV: ARGV es un identificador de archivo especial, el nombre del archivo se repite en una línea de comando cuando se usa @ARGV. Generalmente, es el identificador de archivo nulo.
STDERR: Es el identificador de archivo especial para el error estándar en cualquier paquete.
STDIN: El identificador de archivo especial para la entrada estándar en cualquier paquete.
STDOUT: El identificador de archivo especial para salida estándar en cualquier paquete.
DATOS: El identificador de archivo especial que se refiere a todo lo que sigue al token __END__ en el archivo que contiene el script.
_ (guión bajo): el identificador de archivo especial que se usa para almacenar en caché la información del último operador stat, lstat o file test.
Constantes especiales globales
__END__: Se utiliza para mostrar el final de un programa.
__FILE__: muestra el nombre del archivo donde se hace referencia.
__LINE__: Muestra el número de línea actual
__PACKAGE__: Esta variable muestra el nombre del paquete.