[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