Latest web development tutorials

operaciones de archivo de Perl

Perl utiliza una técnica llamada identificador de archivo variable para operar el tipo de archivo.

Leer o escribir datos desde un archivo requiere el uso de identificadores de archivo.

identificador de archivo (identificador de archivo) es el nombre de una conexión de E / S.

Perl ofrece tres identificadores de archivo: stdin, stdout, stderr, que representan la entrada estándar, la salida estándar y la salida de error estándar.

Perl archivos se pueden abrir en las siguientes maneras:

open FILEHANDLE, EXPR
open FILEHANDLE

sysopen FILEHANDLE, FILENAME, MODE, PERMS
sysopen FILEHANDLE, FILENAME, MODE

Descripción de parámetros:

  • FILEHANDLE: identificadores de archivo, que se utiliza para almacenar un identificador único para el archivo.
  • EXPR: nombre de archivo y el tipo de acceso de archivo que consta de expresión.
  • MODO: archivo de tipo de acceso.
  • PERMANENTES: Bit de acceso (bits de permiso).

función Open

Utilizamos la función siguiente código para abrir un modo de sólo lectura (<) para abrir el archivo archivo.txt:

open(DATA, "<file.txt");

<Sólo lectura representación.

Código identificador de archivo de datos se utiliza para leer el archivo, el siguiente ejemplo se abrirá el archivo y el contenido del archivo de la salida:

#!/usr/bin/perl

open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!";

while(<DATA>){
   print "$_";
}

El código siguiente para escribir direcciones (>) para abrir el archivo archivo.txt:

open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";

> En el modo de escritura.

Si es necesario abrir el archivo en modo de lectura-escritura, delante> o <carácter de signo + para agregar:

open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";

Este enfoque no elimina el contenido del archivo original, si es que quiere eliminar el siguiente formato:

open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";

Si desea presentar datos adicionales, los datos adicionales antes, sólo tiene que abrir el archivo en modalidad de apertura:

open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";

>> Representa añadir datos al archivo existente, si es necesario leer el contenido de un archivo que desea añadir para agregar el signo +:

open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";

La siguiente tabla muestra los diferentes modos de acceso:

modo descripción
<O r Abrir para leer sólo el puntero del archivo en el encabezado del archivo.
> O w Abrir para escribir el puntero del archivo en el encabezado del archivo y el tamaño del archivo se corta a cero. Si no existe el archivo, intente crear.
>> O una Abrir para escribir el puntero del archivo al final del archivo. Si no existe el archivo, intente crear.
+ <O R + Abre para lectura y escritura, el archivo puntero a la cabecera del archivo.
+> O + w Abre para lectura y escritura, el archivo puntero a la cabecera del archivo y el tamaño del archivo se corta a cero. Si no existe el archivo, intente crear.
>> + O A + Abre para leer y escribir el puntero del archivo al final del archivo. Si no existe el archivo, intente crear.

función sysopen

sysopen función es similar a la función de abrir, pero no son el mismo tipo de argumento.

El siguiente ejemplo se basa en la lectura y la escritura (+ <nombre de archivo) manera de abrir el archivo:

sysopen(DATA, "file.txt", O_RDWR);

Si es necesario actualizar los archivos vaciados antes de que el archivo se escribe de la siguiente manera:

sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );

Se puede utilizar el O_CREAT para crear un nuevo archivo, O_WRONLY de sólo escritura modo, O_RDONLY modo de sólo lectura.

El valor de la propiedad octal parámetros permanentes indica que los permisos de archivo después de la creación, el valor predeterminado es 0x666.

La siguiente tabla muestra los posibles valores del modo:

modo descripción
O_RDWR Abre para lectura y escritura, el archivo puntero a la cabecera del archivo.
O_RDONLY Abrir para leer sólo el puntero del archivo en el encabezado del archivo.
O_WRONLY Abrir para escribir el puntero del archivo en el encabezado del archivo y el tamaño del archivo se corta a cero. Si no existe el archivo, intente crear.
O_CREAT Crear un archivo
O_APPEND anexar archivo
O_TRUNC El tamaño del archivo se reduce a cero
O_EXCL Si está utilizando el archivo existe O_CREAT, devuelve un mensaje de error, se puede comprobar si existe un archivo
O_NONBLOCK No bloqueante operaciones I / O para que sea éxito o devuelve un error de inmediato, no bloqueado.

Cerrar la función

Después de su uso en el archivo, cierre el archivo que desea actualizar los buffers de entrada y salida de identificador de archivo asociados con el cierre el archivo tiene la siguiente sintaxis:

close FILEHANDLE
close

FILEHANDLE para el identificador de archivo especificado, si regresa con éxito cerrado verdadera.

close(DATA) || die "无法关闭文件";

La lectura y escritura de archivos

Leer y escribir información en un archivo Hay varias maneras diferentes:

<FILEHANDL operador>

El principal método de lectura de información de un identificador de archivo abierto es <FILEHANDLE> operador. En contexto escalar, devuelve una sola línea desde el identificador de archivo. Por ejemplo:

#!/usr/bin/perl

print "本教程网址?\n";
$name = <STDIN>;
print "网址:$name\n";

Después de la puesta en práctica del procedimiento anterior, la siguiente información, que entrará en la salida de la sentencia de impresión URL:

Cuando usamos <FILEHANDLE> operador, que devuelve un identificador de archivo para cada fila de la lista, por ejemplo, podemos importar todas las líneas a la matriz.

Implementación crea archivo import.txt, como sigue:

$ cat import.txt 
1
2
3

Import.txt y leer cada línea en @lines matriz:

#!/usr/bin/perl

open(DATA,"<import.txt") or die "无法打开数据";
@lines = <DATA>;
print @lines;    # 输出数组内容
close(DATA);

El programa anterior, la salida es:

1
2
3

función getc

xgetc función devuelve un único personaje de la FILEHANDLE especificado, si no se especifica un STDIN de retorno:

getc FILEHANDLE
getc

Si se produce un error, o el identificador de archivo al final del archivo, devuelve undef.


función de lectura

función de lectura se utiliza para manejar la información leída de la memoria intermedia de archivo.

Esta función se utiliza para leer datos binarios de un archivo.

read FILEHANDLE, SCALAR, LENGTH, OFFSET
read FILEHANDLE, SCALAR, LENGTH

Descripción de parámetros:

  • FILEHANDLE: identificadores de archivo, que se utiliza para almacenar un identificador único para el archivo.
  • ESCALAR: Posición de comienzo de la lectura.
  • LONGITUD: longitud del contenido leído.
  • OFFSET: offset.

Si regreso exitoso a leer el número de bytes leídos, devuelve 0 si el final del archivo, si se produce un error de regreso undef.

función de impresión

Para toda la información se extrae de las funciones de identificador de archivo en el extremo posterior de la función principal es la de escribir de impresión:

print FILEHANDLE LIST
print LIST
print

Usar archivo y funciones de impresión pueden manejar los resultados de la ejecución de los aparatos de salida (stdout: la salida estándar), por ejemplo:

print "Hello World!\n";

copia de archivos

En el siguiente ejemplo vamos a abrir un archivo existente file1.txt, y leerlo cada línea escrita a la file2.txt archivo en:

#!/usr/bin/perl

# 只读方式打开文件
open(DATA1, "<file1.txt");

# 打开新文件并写入
open(DATA2, ">file2.txt");

# 拷贝数据
while(<DATA1>)
{
   print DATA2 $_;
}
close( DATA1 );
close( DATA2 );

Cambie el nombre del archivo

Los siguientes ejemplos, vamos a archivo ya existente file1.txt cambiar el nombre de file2.txt, directorio especificado en el directorio / usr / w3big / test / bajo:

#!/usr/bin/perl

rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );

Funciónrenombra sólo acepta dos parámetros, sólo el archivo ya existe pasará a llamarse.

eliminar archivos

Los siguientes ejemplos demuestran cómo usamos la funciónunlink eliminar este archivo:

#!/usr/bin/perl

unlink ("/usr/w3big/test/file1.txt");

Especifique la ubicación del archivo

Puede utilizar la funcióntell para obtener la ubicación del archivo y especifique la ubicación dentro del archivo utilizando la función de búsqueda:

función de decirle

Función decir se utiliza para obtener la ubicación del archivo:

tell FILEHANDLE
tell

Si FILEHANDLE la función devuelve la posición del puntero de archivo, en bytes. Si no se especifica una vuelta al identificador de archivo seleccionado por defecto.

función de búsqueda

seek () se utiliza para desplazarse por el archivo de identificador de archivo de lectura y escritura punteros de la manera de leer o escribir en un archivo, en bytes de lectura y escritura:

seek FILEHANDLE, POSITION, WHENCE

Descripción de parámetros:

  • FILEHANDLE: identificadores de archivo, que se utiliza para almacenar un identificador único para el archivo.
  • POSICIÓN: indica el número de bytes de identificador de archivo (lectura y escritura puntero de posición) para mover.
  • DE DONDE: representa un identificador de archivo (ubicación punteros de lectura y escritura) iniciará cuando la posición de partida, se puede tomar un valor de 0, 1; denotar el principio del archivo, la posición actual y el final del archivo.

Los siguientes ejemplos son para leer 256 bytes desde el comienzo del archivo:

seek DATA, 256, 0;

información del archivo

operaciones de archivo de Perl también puede comprobar si existe un archivo y está leyendo y escribiendo.

Lo que puedo crear el archivo file1.txt, tal como dentro de los siguientes:

$ cat file1.txt 
www.w3big.com
#/usr/bin/perl

my $file = "/usr/test/w3big/file1.txt";
my (@description, $size);
if (-e $file)
{
	push @description, '是一个二进制文件' if (-B _);
	push @description, '是一个socket(套接字)' if (-S _);
	push @description, '是一个文本文件' if (-T _);
	push @description, '是一个特殊块文件' if (-b _);
	push @description, '是一个特殊字符文件' if (-c _);
	push @description, '是一个目录' if (-d _);
	push @description, '文件存在' if (-x _);
	push @description, (($size = -s _)) ? "$size 字节" : '空';
	print "$file 信息:", join(', ',@description),"\n";
}

El programa anterior, la salida es:

file1.txt 信息:是一个文本文件, 15 字节

Presentar los operadores de prueba en la siguiente tabla:

operadores descripción
-A vez que el archivo se abrió por primera vez (unidades: días)
-B Ya se trate de un archivo binario
-C ARCHIVO (nodo-i) i-nodo de tiempo (unidades: modificación días)
-M El archivo eran de última modificación (unidades: días)
-O Todos los archivos son reales UID
-R Archivo o directorio pueden ser leídos por UID / GID real
-S El zócalo (socket)
-T Si se trata de un archivo de texto
-W Archivo o directorio se pueden escribir en el UID / GID real
-X Los archivos o directorios se pueden ejecutar UID / GID real
-b Un archivo de bloque especial (bloque especial) (como el disco de montaje)
-c El carácter especial (caracteres especiales) archivo (como dispositivos de E / S)
-d directorio
-e Archivo o directorio existe nombre
-f archivo ordinario
-g Archivo o directorio tiene el atributo setgid
-k Archivo o directorio tiene el bit sticky
-l Es un enlace simbólico
-O Todos los archivos son válidos UID
-p El archivo es una tubería con nombre (FIFO)
-r Los archivos pueden ser efectivamente UID / GID leer
-s Archivo o directorio existe y no es 0 (devuelve el número de bytes)
-t identificador de archivo es TTY (sistema de la función isatty () devuelve el resultado; el nombre del archivo no puede utilizar esta prueba)
-u Archivo o directorio tiene el atributo setuid
-w Los archivos se pueden escribir en un UID válido / GID
-x Los archivos pueden ser ejecutados de manera efectiva UID / GID
-z El archivo existe, el tamaño de 0 (directorio constante es falso), es decir, si el archivo está vacío,