Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Lectura de archivos en Perl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Vie Mar 21, 2008 5:13 am
maolivar
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Mar 2008
Mensajes: 1
Lectura de archivos en Perl Responder citando

Hola que tal

Estoy aprendiendo Perl y tratando de hacer un programa en Perl bastante sencillo, en el cual me lea los datos de un archivo de texto y una de las columnas me las guarde en otro archivo.

Este es mi archivo de texto
Código:
Serge   20 Malboro    10.50
Fredo   15 Camel       10.50
Marc    10 Camel       10.50
Alain    10 Peter_Bleu 10.50
Agnes   20 Goldo_Leg 6.50
Isabelle 15 Royal_Ment 12.50
Pyr       0 ninguno  0
Thyll    10 Camel 10.50


y este es el código en Perl
Perl:
open(AR,'prueba.txt')|| die "$!\n";
 while(<AR>)
 {
   print AR $columna3; # aquí es donde no sé qué código para que me guardara en un archivo diferente  solo la columna de la marca de cigarrillos.
 }


El resultado sería en un archivo marca.txt que me guarde todos los datos de la columna 3 que es la de la marca de cigarrillos.

Alguien podría ayudarme.

Gracias
Mensaje Vie Mar 21, 2008 8:58 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1361
Ubicación: México
Responder citando

Hola:

Lo que tienes que hacer es:

1. Abrir el archivo de lectura y leer todo el contenido.
2. Abrir el archivo de escritura.
3. Leer cada línea de tu archivo de lectura.
4. Dividir cada línea, en este caso me parece que los campos están separados por espacios.
5. Escribir la columna de la marca en el nuevo archivo.

El código es bastante sencillo y sería similar al siguiente:

Perl:
#Abrimos el archivo de lectura y guardamos el contenido en @lines
open my $IN, '<', 'prueba.txt' or die $!;
my @lines = <$IN>;
close $IN;


#Abrimos nuestro archivo de escritura
open my $OUT, '>', 'marcas.txt' or die $!;

#Iteramos por cada una de las líneas
for my $line(@lines){

    #Nos deshacemos del \n final
    chomp $line;

    #Dividimos la línea por espacios
    my @data = split /\s+/, $line;

    #Escribimos la tercera columna en el nuevo archivo
    print {$OUT} $data[2], "\n";
}

#Cerramos el archivo de escritura
close $OUT;


Como nota, la sintáxis que usas para manipular archivos no es incorrecta:
Perl:
open(AR,'prueba.txt')|| die "$!\n";


Sin embargo la versión que uso de tres argumentos se considera más limpia y de mejor práctica:
Perl:
open my $IN, '<', 'prueba.txt' or die $!;


Saludos
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group