[Perl] Como hago esto con archivos???? URGENTE !!!!
Bolo Lacertus
lacertus@servidor.unam.mx
Wed, 02 Oct 2002 15:45:10 -0600
Saludos!
Una solución simple que consume mucha memoria, pero termina rápido.
Al parecer todo lo que necesitas es identificar los archivos que
comienzan con una de tus palabras clave y agruparlas, considerando que
la palabra siempre estará completa (de lo contrario lo divertido será
hacer las expresiones regulares para detectar las aproximaciones) basta
con construir un hash donde vayas agregando los archivos y números que
encuentres.
Christian Alvarado wrote:
> resolver, pero me salio otro problema con archivos y manejar archivos,
> tengo lo siguiente en 2 archivos
> ArchivoA
> casa 1 casa1.html
> perro 3 perro.html
> ArchivoB
> 1 casa
> 2 perro
> 1 casa 1casa1.html 2casa2.html
> 2 perro 3perro.html 4perro4.html
No probé este programa, así que queda solo como sugerencia. :D
#PAsamos el archivo A por un proceso de clasificación segun palabra
#inicial del nombre de archivo.
open(ARCHIVOA,"otro.txt");
while($r=<ARCHIVOA>)
{
chop $r;
@a=split /\s/,$r;
#Extraer la palabra del nombre, que viene en el campo 2
if($a[2]=~/(\w+)/)
{
$concentrado{$1}.=" ".$a[1].$a[2]; #Agrega Numero y nombre completo
}
else
{
print "no se enontro un nombre valido en este renglon\n";
}
}
close(ARCHIVOA);
#Por último generamos el reporte solicitado
open(ARCHIVOB,"algo.txt");
while($r=<ARCHIVOB>)
{
chop $r;
@a=split /\s/,$r; #(numero, palabra)
print $a[0]." ".$a[1]." ".$concentrado{$a[1]}."\n";
#Número, palabra y el concentrado obtenido del archivo A
}
close ARCHIVOB
_END
Y Voilá, con eso deberías tener, si algun archivo tiene un nombre que no
corresponde con los del Archivo B, no sale en el reporte final, todos
los nombres deben ser 100% alfabéticos (y en este caso con minúsculas) y
terminar en número, punto, etc.
Espero que este ejemplito te sea de utilidad.
Daniel Sol