Rob Dixon wrote: > Your question is too long.
I will surely follow your direction, though my message was verbose because, as i stated in the first line, it was not a technical problem but more of a coding-philosphical one. I think code is little relevant in this case, but i'll post it at the bottom of this message. I am in Windows environment, Perl 5.6. Thank you for suggestion already posted. usage: zip.pl <source dir> <dest file> parameter; <PERL CODE> ### DECLARATIONS ################ use strict; use lib qw(j:/program/perl/lib j:/program/perl/site/lib); use Archive::Zip; use Archive::Zip::Tree; use Getopt::Long; my $logfile = "zip.pl.log"; my $srcdir; # source folder my $bakfile; # destination zip file my $giornimin=0; # include only days older than $giornimin my $giornimax=9999; # include only days newer than $giornimax my $log=0; # log output if true my $delete=0; # delete files after archiving if true sub usage; # show usage and exit sub checkif; # parameter check for every file ### VERIFY INPUT ################ usage if scalar(@ARGV)<2; GetOptions ('GIORNIMIN=i' => \$giornimin, 'GIORNIMAX=i' => \$giornimax, 'LOG' => \$log, 'DELETE' => \$delete ); $srcdir = shift; $bakfile = shift; $srcdir =~s#\\#/#g; $bakfile =~s#\\#/#g; # controllo errori di inserimento die "Errore nei parametri: GIORNIMIN e\' maggiore di GIORNIMAX\n" if ($giornimin > $giornimax); ### DELETE OLDER .BAK AND RENAME OLDER .ZIP TO .BAK ################################################### unlink ($bakfile.".bak") or do { print "\nImpossibile cancellare il file .bak: $!\n (verificare le connessioni di rete)"; print "Vuoi continuare (s/n)?\n"; chomp (my $ans = <STDIN>); die unless ($ans eq "s"); }; rename ($bakfile.".zip",$bakfile.".bak") or do { print "\nImpossibile rinominare il file .zip in . bak: $!\n"; print "Vuoi continuare (s/n)?\n"; chomp (my $ans = <STDIN>); die unless ($ans eq "s"); }; ### CREATE AND WRITE THE ARCHIVE ################################ if ($log) { open (LOG,">>$logfile") or die "Impossibile creare il file di log $logfile: $!"; print LOG ("Inizio procedura: ",scalar localtime,"\n"); } print "\n\nProcedura di archiviazione in corso - - NON INTERROMPERE! Se il programma\n"; print "va in errore, comparira' un messaggio.\n\n"; my $zip = Archive::Zip->new(); my $status = $zip->addTreeMatching($srcdir,'','.',\&checkif); die "Errore nella creazione del file .zip: $status\n" if $status != "AZ_OK"; $status = $zip->writeToFileNamed($bakfile.".zip"); die "Errore nella scrittura del file .zip: $status\n" if $status != "AZ_OK"; if ($log) { print LOG ("Fine procedura: ",scalar localtime,"\n"); } ### CHECKIF ########### sub checkif { return 0 unless ((-M) >= $giornimin); return 0 unless ((-M) <= $giornimax); return 1; } ### USAGE ######### sub usage { print << 'USAGE' Sintassi: perl j:/program/perl/scripts/zip.pl [cartella da zippare] [percorso e nome del file zip] [parametri] Esempio: perl j:/program/perl/scripts/zip.pl c:/documenti/ u:/utenti/abeni/backup Parametri: --GIORNIMIN=<n>: include solo i file modificati da almeno <n> giorni (default 0) --GIORNIMAX=<n>: include solo i file modificati da non piu' di <n> giorni (default 9999) --LOG: scrive su un log informazioni dettagliate sull'operazione NOTA: l'estensione ".zip" verra' aggiunta in ogni caso al nome del file zip, percio' non scrivere "backup.zip" altrimenti diventera' "backup.zip.zip". USAGE ; exit; } </PERL CODE> -- Zanardi2k3 "Why do i need you, feet, when i have wings to fly?" (Frida Kahlo) -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]