Programacion Perl: Funciones de Fecha
Como no me quede tranquilo en ver como se trabajaba con las funciones de fecha en bash me tome la libertad de hacer lo propio en perl. Aca esta un ejemplo que muestra los dias del mes y el dia siguiente empleando algunas rutinas definidas en la libreria Date::Calc, POSIX y Time::Local.
- #!/usr/bin/perl -w
- use strict;
- use Date::Calc qw(Add_Delta_Days);
- use Date::Calc qw(Add_Delta_YMDHMS);
- use POSIX qw(strftime);
- use Time::Local;
- my ($oyear, $omonth, $oday,$ohour,$omin,$osec) = (2005,01,01,0,0,0);
- my ($D_y,$D_m,$D_d, $Dh,$Dm,$Ds) = (0,0,1,0,0,0);
- my ($year,$month,$day, $hour,$min,$sec) = ($oyear, $omonth, $oday,$ohour,$omin,$osec);
- while ($omonth == $month){
- ($oyear, $omonth, $oday,$ohour,$omin,$osec) = ($year,$month,$day, $hour,$min,$sec);
- ($year,$month,$day, $hour,$min,$sec) = Add_Delta_YMDHMS($oyear,$omonth,$oday, $ohour, $omin, $osec, $D_y,$D_m,$D_d, $Dh,$Dm,$Ds);
- my $ctime = timelocal(0, 0, 0, $oday, $omonth-1, $oyear);
- my $ntime = timelocal(0, 0, 0, $day, $month-1, $year);
- my $cdate = POSIX::strftime( "%Y-%m-%d", localtime($ctime));
- my $ndate = POSIX::strftime( "%Y-%m-%d", localtime($ntime));
- print "$cdate,$ndate\n";
- }
El resultado por consola es algo como esto:
2005-01-01,2005-01-02
2005-01-02,2005-01-03
2005-01-03,2005-01-04
2005-01-04,2005-01-05
2005-01-05,2005-01-06
2005-01-06,2005-01-07
2005-01-07,2005-01-08
2005-01-08,2005-01-09
2005-01-09,2005-01-10
2005-01-10,2005-01-11
2005-01-11,2005-01-12
2005-01-12,2005-01-13
2005-01-13,2005-01-14
2005-01-14,2005-01-15
2005-01-15,2005-01-16
2005-01-16,2005-01-17
2005-01-17,2005-01-18
2005-01-18,2005-01-19
2005-01-19,2005-01-20
2005-01-20,2005-01-21
2005-01-21,2005-01-22
2005-01-22,2005-01-23
2005-01-23,2005-01-24
2005-01-24,2005-01-25
2005-01-25,2005-01-26
2005-01-26,2005-01-27
2005-01-27,2005-01-28
2005-01-28,2005-01-29
2005-01-29,2005-01-30
2005-01-30,2005-01-31
2005-01-31,2005-02-01
Espero sirva de algo para todo los perl ceros!!!