Perl - Variables especiales
Hay algunas variables que tienen un significado especial y predefinido en Perl. Son las variables que utilizan caracteres de puntuación después del indicador de variable habitual ($, @ o%), como $ _ (explicado a continuación).
La mayoría de las variables especiales tienen un nombre largo similar al inglés, por ejemplo, Variable de error del sistema operativo $! se puede escribir como $ OS_ERROR. Pero si vas a usar nombres en inglés, entonces tendrás que poner una líneause English;en la parte superior de su archivo de programa. Esto guía al intérprete para captar el significado exacto de la variable.
La variable especial más utilizada es $ _, que contiene la entrada predeterminada y la cadena de búsqueda de patrones. Por ejemplo, en las siguientes líneas:
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print $_;
print "\n";
}
Cuando se ejecuta, esto producirá el siguiente resultado:
hickory
dickory
doc
Nuevamente, veamos el mismo ejemplo sin usar la variable $ _ explícitamente -
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print;
print "\n";
}
Cuando se ejecuta, esto también producirá el siguiente resultado:
hickory
dickory
doc
La primera vez que se ejecuta el bucle, se imprime "nogal". La segunda vez, se imprime "dickory" y la tercera vez, se imprime "doc". Esto se debe a que en cada iteración del ciclo, la cadena actual se coloca en $ _, y se usa de forma predeterminada por impresión. Estos son los lugares donde Perl asumirá $ _ incluso si no lo especifica:
Varias funciones unarias, incluidas funciones como ord e int, así como todas las pruebas de archivo (-f, -d) excepto -t, que por defecto es STDIN.
Varias funciones de lista como imprimir y desvincular.
Las operaciones de coincidencia de patrones m //, s /// y tr /// cuando se usan sin un operador = ~.
La variable de iterador predeterminada en un bucle foreach si no se proporciona ninguna otra variable.
La variable iteradora implícita en las funciones grep y map.
El lugar predeterminado para colocar un registro de entrada cuando el resultado de una operación de entrada de línea se prueba por sí mismo como el único criterio de una prueba while (es decir,). Tenga en cuenta que fuera de una prueba de tiempo, esto no sucederá.
Tipos de variables especiales
Según el uso y la naturaleza de las variables especiales, podemos clasificarlas en las siguientes categorías:
- Variables especiales escalares globales.
- Variables especiales de matriz global.
- Variables especiales de hash global.
- Manejadores de archivos especiales globales.
- Constantes especiales globales.
- Variables especiales de expresión regular.
- Variables especiales de manejador de archivos.
Variables especiales escalares globales
Aquí está la lista de todas las variables especiales escalares. Hemos enumerado los nombres similares en inglés correspondientes junto con los nombres simbólicos.
PS | El espacio predeterminado de entrada y búsqueda de patrones. |
$ ARG | |
PS | El número de línea de entrada actual del último identificador de archivo que se leyó. Un cierre explícito en el identificador de archivo restablece el número de línea. |
$ NR | |
PS | El separador de registros de entrada; nueva línea por defecto. Si se establece en la cadena nula, trata las líneas en blanco como delimitadores. |
$ RS | |
PS | El separador de campo de salida para el operador de impresión. |
$ OFS | |
PS | El separador de registros de salida para el operador de impresión. |
$ ORS | |
PS | Como "$", excepto que se aplica a valores de lista interpolados en una cadena entre comillas dobles (o una cadena interpretada similar). El valor predeterminado es un espacio. |
$ LIST_SEPARATOR | |
PS | El separador de subíndices para la emulación de matrices multidimensionales. El valor predeterminado es "\ 034". |
$ SUBSCRIPT_SEPARATOR | |
$ ^ L | Qué formato de salidas para realizar un avance de formulario. El valor predeterminado es "\ f". |
$ FORMAT_FORMFEED | |
PS | El conjunto actual de caracteres después del cual se puede romper una cadena para completar los campos de continuación (comenzando con ^) en un formato. El valor predeterminado es "\ n" ". |
$ FORMAT_LINE_BREAK_CHARACTERS | |
$ ^ A | El valor actual del acumulador de escritura para líneas de formato. |
$ ACUMULADOR | |
PS | Contiene el formato de salida para números impresos (obsoleto). |
$ OFMT | |
PS | El estado devuelto por el último cierre de tubería, el comando de tilde (``) o el operador del sistema. |
$ CHILD_ERROR | |
PS | Si se usa en un contexto numérico, produce el valor actual de la variable errno, identificando el último error de llamada al sistema. Si se utiliza en un contexto de cadena, produce la correspondiente cadena de error del sistema. |
$ OS_ERROR o $ ERRNO | |
PS | El mensaje de error de sintaxis de Perl del último comando eval. |
$ EVAL_ERROR | |
$$ | El pid del proceso Perl que ejecuta este script. |
$ PROCESS_ID o $ PID | |
$ < | El ID de usuario real (uid) de este proceso. |
$ REAL_USER_ID o $ UID | |
$> | El ID de usuario efectivo de este proceso. |
$ EFFECTIVE_USER_ID o $ EUID | |
PS | El ID de grupo real (gid) de este proceso. |
$ REAL_GROUP_ID o $ GID | |
PS | El gid efectivo de este proceso. |
$ EFFECTIVE_GROUP_ID o $ EGID | |
$ 0 | Contiene el nombre del archivo que contiene el script Perl que se está ejecutando. |
$ PROGRAM_NAME | |
PS | Índice del primer elemento de una matriz y del primer carácter de una subcadena. El valor predeterminado es 0. |
PS | Devuelve la versión más el nivel de parche dividido por 1000. |
$ PERL_VERSION | |
$ ^ D | El valor actual de los indicadores de depuración. |
$ DEPURACIÓN | |
$ ^ E | Mensaje de error extendido en algunas plataformas. |
$ EXTENDED_OS_ERROR | |
$ ^ F | El descriptor máximo de archivos del sistema, normalmente 2. |
$ SYSTEM_FD_MAX | |
$ ^ H | Contiene sugerencias internas del compilador habilitadas por ciertos módulos pragmáticos. |
$ ^ Yo | El valor actual de la extensión de edición in situ. Use undef para deshabilitar la edición en el lugar. |
$ INPLACE_EDIT | |
$ ^ M | El contenido de $ M se puede usar como un grupo de memoria de emergencia en caso de que Perl muera con un error de memoria insuficiente. El uso de $ M requiere una compilación especial de Perl. Consulte el documento INSTALAR para obtener más información. |
$ ^ O | Contiene el nombre del sistema operativo para el que se compiló el binario de Perl actual. |
$ OSNAME | |
$ ^ P | La bandera interna que el depurador borra para que no se depure. |
$ PERLDB | |
$ ^ T | La hora a la que comenzó a ejecutarse el script, en segundos desde la época. |
$ TIEMPO BASE | |
$ ^ W | El valor actual del interruptor de advertencia, ya sea verdadero o falso. |
$ ADVERTENCIA | |
$ ^ X | El nombre con el que se ejecutó el binario de Perl. |
$ EXECUTABLE_NAME | |
$ ARGV | Contiene el nombre del archivo actual cuando se lee desde <ARGV>. |
Variables especiales de matriz global
@ARGV | La matriz que contiene los argumentos de la línea de comandos previstos para el script. |
@C ª | La matriz que contiene la lista de lugares donde buscar scripts de Perl para ser evaluados por las construcciones do, require o use. |
@F | La matriz en la que se dividen las líneas de entrada cuando se proporciona el modificador -a de línea de comandos. |
Variables especiales de hash global
%C ª | El hash que contiene entradas para el nombre de archivo de cada archivo que se ha incluido mediante hacer o requerir. |
% ENV | El hash que contiene su entorno actual. |
% SIG | El hash utilizado para configurar controladores de señales para varias señales. |
Manejadores de archivos especiales globales
ARGV | El identificador de archivo especial que itera sobre los nombres de archivo de la línea de comando en @ARGV. Por lo general, se escribe como identificador de archivo nulo en <>. |
STDERR | El identificador de archivo especial para errores 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 la salida estándar en cualquier paquete. |
DATOS | El identificador de archivo especial que se refiere a cualquier cosa que siga al token __END__ en el archivo que contiene el script. O el identificador de archivo especial para cualquier cosa que siga al token __DATA__ en un archivo requerido, siempre y cuando esté leyendo datos en el mismo paquete en el que se encontró __DATA__. |
_ (guion bajo) | El identificador de archivo especial que se usa para almacenar en caché la información del último operador de prueba de archivo, lstat o estadística. |
Constantes especiales globales
__FIN__ | Indica el final lógico de su programa. Cualquier texto siguiente se ignora, pero se puede leer mediante el identificador de archivo DATA. |
__ARCHIVO__ | Representa el nombre del archivo en el punto de su programa donde se usa. No interpolado en cadenas. |
__LÍNEA__ | Representa el número de línea actual. No interpolado en cadenas. |
__PAQUETE__ | Representa el nombre del paquete actual en tiempo de compilación, o indefinido si no hay un paquete actual. No interpolado en cadenas. |
Variables especiales de expresión regular
$ dígito | Contiene el texto que coincide con el conjunto de paréntesis correspondiente en el último patrón emparejado. Por ejemplo, $ 1 coincide con lo que estaba contenido en el primer conjunto de paréntesis en la expresión regular anterior. |
PS | La cadena que coincide con la última coincidencia de patrón exitosa. |
$ PARTIDO | |
$ ' | La cadena que precede a cualquier coincidencia con la última coincidencia de patrón exitosa. |
$ PREMATCH | |
PS | La cadena que sigue a lo que coincide con la última coincidencia de patrón exitosa. |
$ POSTMATCH | |
$ + | El último corchete que coincide con el último patrón de búsqueda. Esto es útil si no sabe cuál de un conjunto de patrones alternativos coincidió. Por ejemplo: / Versión: (. *) | Revisión: (. *) / && ($ rev = $ +); |
$ LAST_PAREN_MATCH |
Variables especiales de identificador de archivo
$ | | Si se establece en un valor distinto de cero, fuerza un fflush (3) después de cada escritura o impresión en el canal de salida seleccionado actualmente. |
$ OUTPUT_AUTOFLUSH | |
PS | El número de página actual del canal de salida seleccionado actualmente. |
$ FORMAT_PAGE_NUMBER | |
$ = | La longitud de página actual (líneas imprimibles) del canal de salida seleccionado actualmente. El valor predeterminado es 60. |
$ FORMAT_LINES_PER_PAGE | |
PS | El número de líneas que quedan en la página del canal de salida seleccionado actualmente. |
$ FORMAT_LINES_LEFT | |
$ ~ | El nombre del formato de informe actual para el canal de salida seleccionado actualmente. El valor predeterminado es el nombre del identificador de archivo. |
$ FORMAT_NAME | |
$ ^ | El nombre del formato de inicio de página actual para el canal de salida seleccionado actualmente. El valor predeterminado es el nombre del identificador de archivo con _TOP agregado. |
$ FORMAT_TOP_NAME |