Perl utiliza una variable llamada tipo de identificador de archivo para manipular archivos.
Leer o escribir datos de un archivo requiere un identificador de archivo.
Un identificador de archivo es el nombre de una conexión de E/S.
Perl proporciona tres identificadores de archivos: STDIN, STDOUT y STDERR, que representan entrada estándar, salida estándar y salida de error estándar respectivamente.
Puede abrir archivos en Perl utilizando los siguientes métodos:
abra FILEHANDLE, EXPRopen FILEHANDLE, FILENAME, MODE, PERMSsysopen FILEHANDLE, FILENAME, MODE
Descripción del parámetro:
FILEHANDLE: identificador de archivo, utilizado para almacenar un identificador de archivo único.
EXPR: expresión compuesta por el nombre del archivo y el tipo de acceso al archivo.
MODO: tipo de acceso al archivo.
PERMS: bits de permiso de acceso (bits de permiso).
En el siguiente código, usamos la función open para abrir el archivo file.txt en modo de solo lectura (<):
abrir(DATOS, "<archivo.txt");
< indica modo de solo lectura.
DATOS en el código es el identificador de archivo utilizado para leer el archivo. El siguiente ejemplo abrirá el archivo y generará el contenido del mismo:
El siguiente código abre el archivo file.txt para escribir ( > ):
open(DATA, ">file.txt") o die "el archivo file.txt no se puede abrir, $!";
> Indica el método de escritura.
Si necesita abrir el archivo para leer y escribir, puede agregar un signo + antes del carácter > o <:
open(DATA, "+<file.txt"); o morir "el archivo file.txt no se puede abrir, $!";
Este método no eliminará el contenido original del archivo. Si desea eliminarlo, el formato es el siguiente:
abra DATOS, "+>archivo.txt" o "el archivo archivo.txt no se puede abrir, $!";
Si desea agregar datos a un archivo, solo necesita abrir el archivo en modo agregar antes de agregar los datos:
open(DATA,">>file.txt") || el "archivo.txt no se puede abrir, $!";
>> significa agregar datos al final del archivo existente. Si necesita leer el contenido del archivo que se agregará, puede agregar el signo +:
open(DATA,"+>>file.txt") || el "archivo.txt no se puede abrir, $!";
La siguiente tabla enumera los diferentes modos de acceso:
| modelo | describir |
|---|---|
| < o r | Ábralo en modo de solo lectura y apunte el puntero del archivo al encabezado del archivo. |
| > o w | Ábralo en modo de escritura, apunte el puntero del archivo al encabezado del archivo y trunque el tamaño del archivo a cero. Si el archivo no existe, intente crearlo. |
| >> o un | Ábralo en modo de escritura y apunte el puntero del archivo al final del archivo. Si el archivo no existe, intente crearlo. |
| +< o r+ | Ábralo en modo lectura-escritura y apunte el puntero del archivo al encabezado del archivo. |
| +> o w+ | Ábralo en modo lectura-escritura, apunte el puntero del archivo al encabezado del archivo y trunque el tamaño del archivo a cero. Si el archivo no existe, intente crearlo. |
| +>> o un+ | Ábralo en modo lectura-escritura y apunte el puntero del archivo al final del archivo. Si el archivo no existe, intente crearlo. |
La función sysopen es similar a la función open, excepto que las formas de sus parámetros son diferentes.
El siguiente ejemplo abre un archivo para lectura y escritura (+<nombre de archivo):
sysopen(DATOS, "archivo.txt", O_RDWR);
Si necesita borrar el archivo antes de actualizarlo, el método de escritura es el siguiente:
sysopen(DATOS, "archivo.txt", O_RDWR|O_TRUNC);
Puede usar O_CREAT para crear un nuevo archivo, O_WRONLY es el modo de solo escritura, O_RDONLY es el modo de solo lectura.
El parámetro PERMS es un valor de atributo octal que indica los permisos después de la creación del archivo. El valor predeterminado es 0x666 .
La siguiente tabla enumera posibles valores de modo:
| modelo | describir |
|---|---|
| O_RDWR | Ábralo en modo lectura-escritura y apunte el puntero del archivo al encabezado del archivo. |
| O_RDONLY | Ábralo en modo de solo lectura y apunte el puntero del archivo al encabezado del archivo. |
| O_WRONLY | Ábralo en modo de escritura, apunte el puntero del archivo al encabezado del archivo y trunque el tamaño del archivo a cero. Si el archivo no existe, intente crearlo. |
| O_CREAT | crear archivo |
| O_APPEND | adjuntar archivo |
| O_TRUNC | Truncar el tamaño del archivo a cero |
| O_EXCL | Si el archivo existe cuando se usa O_CREAT, se devolverá un mensaje de error. Puede probar si el archivo existe. |
| O_NONBLOCK | La E/S sin bloqueo permite que nuestra operación tenga éxito o devuelva un error inmediatamente sin ser bloqueada. |
Después de utilizar el archivo, debe cerrarse para actualizar los búferes de entrada y salida asociados con el identificador del archivo. La sintaxis para cerrar el archivo es la siguiente:
cerrarFILEHANDLEcerrar
FILEHANDLE es el identificador de archivo especificado y devuelve verdadero si se cierra correctamente.
cerrar(DATOS) || morir "No se puede cerrar el archivo";
Hay varias formas diferentes de leer y escribir información en archivos:
El método principal para leer información de un identificador de archivo abierto es el operador <FILEHANDLE>. En un contexto escalar, devuelve una sola fila del identificador del archivo. Por ejemplo:
Cuando usamos el operador <FILEHANDLE>, devolverá una lista de cada línea en el identificador del archivo; por ejemplo, podemos importar todas las líneas en una matriz.
Implemente la creación del archivo import.txt con el siguiente contenido:
$ gato importar.txt 123
Lea import.txt y coloque cada línea en la matriz @lines:
Al ejecutar el programa anterior, el resultado de salida es:
123
La función xgetc devuelve un solo carácter del FILEHANDLE especificado, o STDIN si no se especifica:
getcFILEHANDLEgetc
Si se produce un error o el identificador del archivo está al final del archivo, se devuelve undef.
La función de lectura se utiliza para leer información del identificador de archivo del búfer.
Esta función se utiliza para leer datos binarios de un archivo.
leer ADMINISTRADOR DE ARCHIVO, ESCALAR, LONGITUD, COMPENSACIÓN leer ADMINISTRADOR DE ARCHIVO, ESCALAR, LONGITUD
Descripción del parámetro:
FILEHANDLE: identificador de archivo, utilizado para almacenar un identificador de archivo único.
ESCALAR: Almacena el resultado. Si no se especifica OFFSET, los datos se colocarán al principio de ESCALAR. De lo contrario, los datos se colocan después del byte OFFSET en ESCALAR.
LONGITUD: La longitud del contenido leído.
DESPLAZAMIENTO: desplazamiento.
Devuelve el número de bytes leídos si la lectura se realiza correctamente, 0 si se llega al final del archivo y undef si se produce un error.
Para todas las funciones que leen información de identificadores de archivos, la función de escritura principal en el backend es imprimir:
imprimir FILEHANDLE LISTprint LISTprint
Los resultados de la ejecución del programa se pueden enviar al dispositivo de salida (STDOUT: salida estándar) usando el identificador de archivo y la función de impresión, por ejemplo:
imprimir "¡Hola mundo!n";
En el siguiente ejemplo, abriremos un archivo file1.txt existente, leeremos cada línea y lo escribiremos en el archivo file2.txt:
En el siguiente ejemplo, cambiamos el nombre del archivo existente file1.txt a file2.txt y el directorio especificado está en /usr/codercto/test/:
#!/usr/bin/perlrename ("/usr/codercto/test/file1.txt", "/usr/codercto/test/file2.txt" );La función cambia el nombre solo acepta dos parámetros y solo cambia el nombre de los archivos existentes.
El siguiente ejemplo demuestra cómo utilizar la función de desvincular para eliminar archivos:
Puede obtener la ubicación de un archivo usando la función tell y especificar la ubicación dentro del archivo usando la función de búsqueda :
La función tell se utiliza para obtener la ubicación del archivo:
Decir FILEHANDL Decir
Si se especifica FILEHANDLE, esta función devuelve la posición del puntero del archivo, en bytes. Si no se especifica, devuelve el identificador de archivo seleccionado predeterminado.
La función seek() lee o escribe archivos moviendo el puntero de lectura y escritura del archivo a través del identificador del archivo, y lee y escribe en bytes:
buscar FILEHANDLE, POSICIÓN, DONDE
Descripción del parámetro:
FILEHANDLE: identificador de archivo, utilizado para almacenar un identificador de archivo único.
POSICIÓN: Indica el número de bytes que moverá el identificador del archivo (puntero de posición de lectura y escritura).
DONDE: Indica la posición inicial cuando el identificador del archivo (puntero de posición de lectura-escritura) comienza a moverse. Los valores posibles son 0, 1 y 2 que indican el comienzo del archivo, la posición actual y el final del archivo. archivo respectivamente.
El siguiente ejemplo lee 256 bytes desde el principio del archivo:
buscar DATOS, 256, 0;
Las operaciones de archivos de Perl también pueden probar primero si el archivo existe, si se puede leer y escribir, etc.
Primero podemos crear el archivo file1.txt, de la siguiente manera:
$ gato archivo1.txt www.codercto.com
Al ejecutar el programa anterior, el resultado de salida es:
Información file1.txt: es un archivo de texto, 15 bytes
Los operadores de prueba de archivos se muestran en la siguiente tabla:
| Operador | describir |
|---|---|
| -A | La hora en que se accedió al archivo por última vez (unidad: días) |
| -B | ¿Es un archivo binario? |
| -DO | Tiempo de modificación del nodo índice del archivo (inodo) (unidad: días) |
| -METRO | La hora en que se modificó el archivo por última vez (unidad: días) |
| -O | El archivo pertenece al UID real. |
| -R | Los archivos o directorios se pueden leer mediante UID/GID real |
| -S | Para enchufe (enchufe) |
| -T | ¿Es un archivo de texto? |
| -W | Se pueden escribir archivos o directorios con UID/GID real |
| -INCÓGNITA | Los archivos o directorios se pueden ejecutar con UID/GID real |
| -b | Para archivos de bloque especial (bloque especial) (como discos montados) |
| -do | Para archivos de caracteres especiales (caracteres especiales) (como dispositivos de E/S) |
| -d | para directorio |
| -mi | El nombre del archivo o directorio existe |
| -F | para archivos ordinarios |
| -gramo | El archivo o directorio tiene el atributo setgid |
| -k | El archivo o directorio tiene el bit adhesivo configurado |
| -l | para enlaces simbólicos |
| -o | El archivo pertenece a un UID válido |
| -pag | El archivo es una canalización con nombre (FIFO) |
| -r | El archivo se puede leer con UID/GID válido |
| -s | El archivo o directorio existe y no es 0 (devuelve el número de bytes) |
| -t | El identificador del archivo es TTY (resultado devuelto por la función del sistema isatty(); esta prueba no se puede utilizar para nombres de archivos) |
| -tú | El archivo o directorio tiene el atributo setuid |
| -w | Se pueden escribir archivos con UID/GID válido |
| -incógnita | El archivo se puede ejecutar con un UID/GID válido |
| -z | El archivo existe y el tamaño es 0 (el directorio siempre es falso), es decir, si es un archivo vacío. |