PDA

Visualizza la versione completa : data in perl


morphi
24-01-2005, 12:36
Salve a tutti :D
Sto utilizzando uno script in perl che una volta lanciato con un parametro esterno numerico stampa a video una data passata.

Mi spiego meglio con un esempio
se lancio lo script data_vecchia.pl con l'opzione 2 mi stampa a video la data di 2 giorni fa
es. oggi è 20050124

/home/script =>data_vecchia.pl 2
20050122

Il mio problema :messner: è il seguente..come faccio ad invertire il tipo di calcolo ovvero impostare il parametro all'interno dello script e passare come opzione una data qualunque ?
es.

/home/script =>data_vecchia.pl 20050118
20050116

in calce lo script

------------------------------------

#!/usr/bin/perl
use POSIX qw(strftime);
$before=$ARGV[0];
$periodo=strftime "%Y%m%d", localtime(time - $before*86400);
print $periodo;

---------------------------------------

grazie per l'aiuto

Ciao

shishii
24-01-2005, 18:10
Non sono riuscito a capire cosa ti serve.

morphi
24-01-2005, 18:22
mi spiego meglio

vorrei ottenere una data vecchia partendo da un'altra data vecchia e non da quella locale (localtime)

per esempio vorrei cercare tutti i file che si chiamano NOMEFILE_DATA.log dove DATA è la data di 15 giorni fa e da li cancellare quelli 2 giorni + vecchi di quella data.

Lo so sembra una str....ta perchè potrei cercare direttamente quelli di 17 giorni prima ma a me serve quella funzionalità per un'altro scopo.


spero di averti spiegato bene.. :ciauz:

shishii
24-01-2005, 18:36
ho capito, non è una cosa banale risolvibile con due righe di codice. La manipolazione del tempo riserve trappole imprevedibili, pensa alla differenza se tu vuoi sapere quale era il giorno che precedeva di due il 01/03 e sei in un anno bisestile o meno!!

Per cui devi riscrivere il programma affidandoti a moduli Perl adatti tipo Date::Manip che si trova su http://search.cpan.org

Quello che hai presentato tu era semplice proprio e solamente perchè partiva dal momento attuale che è un numero intero indicato dalla CPU di secondi a partire dal 01/01/1970

Loading