Archivos

Table of contents

  1. Open
    1. Abrir un archivo y leerlo
    2. Escribir al final de un archivo
    3. Truncar el contenido y escribir en el
    4. Buscar una palabra en el archivo
  2. Modulo File
    1. Obtener nombre del archivo
    2. Copiar un archivo

Existen 6 modos para manejar archivos

OperacionDescripcion
<Abre el archivo en solo lectura
>Crea el archivo si es necesario, trunca el contenido y escribe en el
»Crea el archivo si es necesario y hace un append
+<Lo abre en modo de lectura y escritura
+>Crea el archivo si es necesario, trunca el contenido, lo lee y escribe en el
Crea el archivo si es necesario, lee y hace un append

Principalmente existen dos metodos para manejar archivos openy sysopen

Open

Sintaxis: open IDENTIFICADOR, EXPRESION

Abrir un archivo y leerlo

open(DATOS, "<prueba.txt") or die "No se pudo abrir el archivo";

while(my $linea = <DATOS>){
	print $linea;
}
close(DATOS);

Usando forearch

foreach my $linea (<DATOS>){
	print $linea;
}

Escribir al final de un archivo

my $nuevo_texto = "Hola";

open(DATOS, ">>prueba.txt") or die "No se pudo abrir el archivo";

print DATOS $nuevo_texto;
close(DATOS);

Truncar el contenido y escribir en el

my $nuevo_texto = "Hola2";

open(DATOS, ">prueba.txt") or die "No se pudo abrir el archivo";

print DATOS $nuevo_texto;
close(DATOS);

Buscar una palabra en el archivo

 open(DATOS, "<prueba.txt") or die "No se pudo abrir el archivo";

while(my $linea = <DATOS>){
	if ($linea =~ /quantum/){
		print "Palabra encontrada: ";
	}
	print $linea;
}
close(DATOS);

En este caso la palabra que queremos buscar es quantum

Funciones utiles

  • chomp(): Eliminar le caracter de salto de linea cuando se recorre un archivo linea por linea

Modulo File

Es un modulo que provee diversar funciones para trabajar con archivos

Obtener nombre del archivo

use File::Basename;

my $archivo = "prueba.txt";
print basename($archivo);

Copiar un archivo

use File::Copy;
use File::Basename;

my $origen = "prueba.txt";
my $destino = "/tmp/" . basename($origen);

copy($origen, $destino);

En este caso se copia el archivo a /tmp con el mismo nombre