• Publicidad

Lectura de archivos en Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Lectura de archivos en Perl

Notapor maolivar » 2008-03-21 06:13 @300

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: Seleccionar todo
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
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
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.
 }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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
maolivar
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2008-03-21 05:53 @287

Publicidad

Notapor kidd » 2008-03-21 09:58 @457

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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#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;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Como nota, la sintáxis que usas para manipular archivos no es incorrecta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(AR,'prueba.txt')|| die "$!\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sin embargo la versión que uso de tres argumentos se considera más limpia y de mejor práctica:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $IN, '<', 'prueba.txt' or die $!;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 10 invitados

cron