[perl] Lectura de archivos por lineas
Bolo Lacertus
lacertus@servidor.unam.mx
Mon, 21 Dec 1998 16:30:13 -0600
Saludos!!!
Bueno, tareas como esas son de las que los perleros presumimos que se
pueden hacer con extrema facilidad, pero siempre hay una primera vez
para todos.
Jhon William Calderón P. wrote:
> - Tendo archivo planos ASCII, los cuales contienen lineas de
> información, cada una de ellas contiene registros separados por comas.
> Al final de cada una existe un salto de línea. Si todas las líneas no
> tuvieran la misma longitud, como se podría una sola a la vez para poder
> sacar uno a uno los registros. ?
Ok, la cosa va como sigue: -Lees el renglón, -Quitas la vuelta de carro,
- Divides en todo punto donde encuentres comas generando un arreglo de
cadenas.
lo cual se vería mas o menos (supongamos que tu identificador de archivo
es AE)
open(AE,"patito.txt"); #suponiendo que en patito.txt estan tus
renglones.
while($linea=<AE>) #cilo típico para leer todas las líneas
{
chop $linea; #Quito la vuelta de carro
@datos=split(/\,/,$linea);
#Trabajar los datos, que ahora con elementos del arreglo.
}
> - Otra joya. si tengo archivos planos ASCII de la forma :
> como hago para quitarla la " a los registros que la tienen. traté con :
Muy bien, para quitarle las comillas a los registros que las tengan (una
vez que los lograste dividir por el anterior método), basta con hacer
(en la zona donde trabajas los elementos del arreglo):
for($c1=0;$c1<@datos;$c1++)
{
#la cadena regular busca lo que este entre comillas iniciales y finales
y si lo
#Encuentra, substituye la cadena por lo que tenía dentro, algo complejo
pero
# Te evita borrar comillas que sean parte del contenido.
$datos[$c1]=~s/^\"(.*)\"$/$1/;
}
En fin, espero que estos consejillos te sean de utilidad: Daniel sol
--
Bolo Lacertus: lacertus@servidor.dgsca.unam.mx ==~\___\
http://132.248.71.81/cgi-bin/lacertus/hola =__vvvv
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCM/GCS/GE/GED d?>d+ s:+ a-->- C++>+++$ US/UI++ P++++$ L+ E- W+++ N o?
K-
w--- !O !M V-- PS++ PE-- Y+ PGP+ t+ 5? X- R* tv-- b++>+++ DI+++ D+ G+
e+>++
h* r++(*) y+
------END GEEK CODE BLOCK------
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : cancelacion perl