lunedì 10 settembre 2018

Perl e ZIP


Non so se puo' servirvi - spero di si. Oggi parliamo di perl come comprimere/decomprimere files.

Comprimere:
io ho usato use IO::Compress::Zip qw(zip $ZipError);
(perche' con Archive::Zip non c'e' stato verso - allora l'ho mandato affangrulo)
in secundis io ho avuto necessita' di mettere i files in un array (per poterli cancellare una volta fatto)
ter avevo bisogno di avere tutti i file sciolti nello zip (quindi senza preservare il path)
quindi ho letto la directory, ho ficcato tutto in un'array scansando tutto cio' che non e' file e non e' pdf
voi ovviamente fate quello che cazzo vi pare, ovviamente con questo metodo non potete zippare direttamente una directory



- apro la directory
- la scansiono
- butto nell'array solo i pdf
- passo l'array allo zip
- elimino i file (uno per uno)

Decomprimere:
ho una pletora di file pdf che devono essere buttati su db. Li decomprimo, mi salvo in un array i nomi delle directory e poi butto tutto su db...



- scansiono la directory dove risiedono gli zip
- salto se directory
- salto se non e' uno zip
- cosa interessante: salvo ogni zip in una directory che ha lo stesso nome del file zip (tranne l'estensione).
per farlo devo fare un substring (substr $zipname 0, -4)
- creo un nuovo zip (my $zip = Archive::Zip -> new($zipname))
- prendo ogni singolo membro dello zip e lo estraggo nella directory che gli corrisponde
( foreach my $member ($zip->members){
next if $member->isDirectory;
(my $extractName = $member->fileName) =~ s{.*/}{};
$member->extractToFileNamed(
"$destinationDirectory/$extractName");
})
- salvo il nome della dir nell'array (push(@unzipped_to_scan, $destinationDirectory);)
- elimino il file zip una volta estratto (unlink $file;)

Nessun commento:

Posta un commento

I messaggi non appaiono subito ma a seguito dell'approvazione di un moderatore. Siete pregati di seguire le seguenti regole