SoloCodigo

Programación Web y Scripting => Perl => Mensaje iniciado por: patho en Jueves 10 de Abril de 2008, 21:36

Título: Edición Y Creación De Archivos
Publicado por: patho en Jueves 10 de Abril de 2008, 21:36
hola a todos, tengo el siguiente problemita, me han entregado una carpeta con archivos de entrada de los trabajadores, es 1 archivo por dia, y me han entregado todos los meses de este año, se necesita crear un archivo unico con todos los contenidos del mes (todos los dias), pero el script que estoy tratando de hacer le mando por parametro el mes y el año del que quiero crear el archivo final,

Código: Text
  1. horas.pl 01 2008
  2.  


logro llegar a la carpeta sin problemas, pero no logro encontrar y menos editar los archivos.


alguien me puede ayudar en esto??


la estructura de las carpetas es la siguiente

./2008
    |-enero
    |-febrero
    |-marzo
    |-abril
    |-mayo
    |-junio
    |-julio
    |-agosto
    |-septiembre
    |-noviembre
    |-diciembre



y en cada una de ellas existen 4 archivos de la siguiente estructura

en el caso de la carpeta de enero

01-02-08-07.txt
01-02-08-10.txt
01-02-08-19.txt
01-02-08-24.txt


(mes-dia-año-xx.txt)



ojala alguien me poueda ayudar

de ante mano muchas gracias
Título: Re: Edición Y Creación De Archivos
Publicado por: su - en Jueves 10 de Abril de 2008, 21:53
Pon lo que llevas hecho para poderte ayudar.
Título: Re: Edición Y Creación De Archivos
Publicado por: patho en Jueves 10 de Abril de 2008, 22:44
Cita de: "su -"
Pon lo que llevas hecho para poderte ayudar.
tengo esto por ahora, mas de 3 años qeu no tomaba perl por eso es que acudi a ustedes


gracias, estoy trabajando en Debian Etch




Código: Text
  1.  
  2.  
  3. #!/usr/bin/perl
  4.  
  5. $MES = $ARGV[0];
  6. $ANIO = $ARGV[1];
  7.  
  8. for ($ARGV[0]) {
  9.   /01/ and do {$MES = 'enero'};
  10.   /02/ and do {$MES = 'febrero'};
  11.   /03/ and do {$MES = 'marzo'};
  12.   /04/ and do {$MES = 'abril'};
  13.   /05/ and do {$MES = 'mayo'};
  14.   /06/ and do {$MES = 'junio'};
  15.   /07/ and do {$MES = 'julio'};
  16.   /08/ and do {$MES = 'agosto'};
  17.   /09/ and do {$MES = 'septiembre'};
  18.   /10/ and do {$MES = 'octubre'};
  19.   /11/ and do {$MES = 'noviembre'};
  20.   /12/ and do {$MES = 'diciembre'};
  21. }
  22.  
  23. $Direc = "$ANIO/$MES";
  24.  
  25. $archivos = `ls $Direc`;
  26. foreach my $arch (@archivos) {
  27. print $arch;
  28.   open FICHERO, $arch;
  29.   while ($linea = <FICHERO>) {
  30.     chop($linea);
  31.     print $linea."\n";
  32.   } close FICHERO
  33. }
  34.  
  35.  
  36.  
Título: Re: Edición Y Creación De Archivos
Publicado por: su - en Viernes 11 de Abril de 2008, 00:20
Bien, de lo que ya tenes hecho:
Código: Text
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. my @mes = (
  5.     "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
  6.     "agosto", "septiembre", "octubre", "noviembre", "diciembre"
  7. );
  8.  
  9. my $dir = $ARGV[1] . ( $mes[ $ARGV[0] ] );
  10. opendir DR, $dir or die "No se puede abrir el dierectorio $dir: $!\n";
  11. foreach my $fichero ( readdir(DR) ){ # por cada cosa en $dir
  12.     next if not -f $fichero; # ignoramos si es directorio
  13.     open ENTRADA, $fichero or die "$fichero: $!\n";
  14.     open SALIDA, "+>fichero_de_salida.txt" or die "salida: $!\n";
  15.     while ( not eof(ENTRADA) ){
  16.         my $buff;
  17.         sysread ( ENTRADA, $buff, 1048576 ); # leemos 1MB
  18.         print SALIDA $buff; # imprimimos en salida
  19.     }
  20.     close SALIDA;
  21.     close ENTRADA;
  22. }
  23. closedir DR;
  24.  

En teoria funciona y hay que agregarle un par de cosas mas para que sea perfecto, pero eso te lo dejo a vos.
Título: Re: Edición Y Creación De Archivos
Publicado por: patho en Viernes 11 de Abril de 2008, 22:15
Cita de: "su -"
Bien, de lo que ya tenes hecho:
Código: Text
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. my @mes = (
  5.     "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
  6.     "agosto", "septiembre", "octubre", "noviembre", "diciembre"
  7. );
  8.  
  9. my $dir = $ARGV[1] . ( $mes[ $ARGV[0] ] );
  10. opendir DR, $dir or die "No se puede abrir el dierectorio $dir: $!\n";
  11. foreach my $fichero ( readdir(DR) ){ # por cada cosa en $dir
  12.     next if not -f $fichero; # ignoramos si es directorio
  13.     open ENTRADA, $fichero or die "$fichero: $!\n";
  14.     open SALIDA, "+>fichero_de_salida.txt" or die "salida: $!\n";
  15.     while ( not eof(ENTRADA) ){
  16.         my $buff;
  17.         sysread ( ENTRADA, $buff, 1048576 ); # leemos 1MB
  18.         print SALIDA $buff; # imprimimos en salida
  19.     }
  20.     close SALIDA;
  21.     close ENTRADA;
  22. }
  23. closedir DR;
  24.  

En teoria funciona y hay que agregarle un par de cosas mas para que sea perfecto, pero eso te lo dejo a vos.





muchas gracias voy a probar tus sugerencias  :)  :)

habian muchas cosas que no me acordaba  :huh: jeje


y despues cuento como me fue ajaja gracias nuevamente



saludos