Vie Mar 21, 2008 5:13 am
|
 |
maolivar
Perlero Nuevo

|
Registrado: 21 Mar 2008
Mensajes: 1
|
|
| Lectura de archivos en Perl |
|
|
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 |
|
|
|

Vie Mar 21, 2008 8:58 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1272
Ubicación: México
|
|
|
|
|
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 |
|

Powered by phpBB © 2001, 2005 phpBB Group
|