• Publicidad

Comprimir multiples archivos en un archivo GZIP

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Comprimir multiples archivos en un archivo GZIP

Notapor Alfumao » 2011-12-01 08:57 @415

Hola otra vez,

Estoy intentando comprimir los archivos de un directorio, que tengan una extensión determinada, en un archivo tipo "gz" (también me valdría la extension Zip u otra).

Decidí usar el módulo Compress::Zlib para lograrlo, pero resulta que en vez de crearme un archivo comprimido, lo que hace es juntarme esos archivos en uno sólo (lo que necesito es poder tener los archivos comprimidos pero manteniendo su integridad individual, lo que es un "zip" de toda la vida).

En fin, aquí os dejo el código por si me podéis ayudar a conseguir mi objetivo modificando algo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl.exe -w
  2. use strict;
  3. use Compress::Zlib;
  4.  
  5. print "Enter your directory path\:\n"; #directorio donde estan los archivos
  6. chomp( my $path = <STDIN> );
  7. chdir $path or die "ERROR: Unable to enter $path: $!\n";
  8. opendir( TEMP, "." );
  9. my @files = readdir(TEMP);
  10. closedir TEMP;
  11.  
  12. print "Enter your file type to join\:\n";    #Tipo archivos a comprimir
  13. chomp( my $tipo = <STDIN> );
  14.  
  15. open SALIDA, ">Zipped.gz" || die("can´t open out file");
  16.  
  17. for my $file (@files) {
  18.  
  19.     if ( $file =~ /\.$tipo/ ) {
  20.  
  21.         my $buffer;
  22.  
  23.         my $gz = gzopen( $file, "rb" ) or die "Cannot open $file: $gzerrno\n";
  24.  
  25.         print SALIDA "$buffer" while $gz->gzread($buffer) > 0;
  26.  
  27.         die "Error reading from $file: $gzerrno" . ( $gzerrno + 0 ) . "\n" if $gzerrno != Z_STREAM_END;
  28.  
  29.         $gz->gzclose();
  30.     }
  31. }
  32.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Gracias por adelantado.
Última edición por Alfumao el 2011-12-01 11:11 @507, editado 1 vez en total
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Comprimir multiples archivos en un archivo GZIP

Notapor Alfumao » 2011-12-01 10:59 @499

Solventado leyendo la documentación de los módulos relacionados con la compresión de Perldoc. Además de forma rapidísima y sencillisima.

Ojalá le sea útil a alguien este programilla :wink:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl.exe -w
  2. use strict;
  3. use IO::Compress::Zip qw(zip $ZipError);
  4.  
  5. print "Enter your directory path:\n";  #Entrar al directorio
  6. chomp( my $path = <STDIN> );
  7. chdir $path or die "ERROR: Unable to enter $path: $!\n";
  8.  
  9. opendir( TEMP, "." );
  10. my @files = readdir(TEMP);
  11. closedir TEMP;
  12.  
  13. print "Enter your file type to join\n";    #Tipo archivos a comprimir
  14. chomp( my $tipo = <STDIN> );
  15.  
  16. zip [<*.$tipo>] => 'Zipper.zip' or die "zip failed: $ZipError\n";
  17.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


No sé si sobrará alguna línea aún...
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron