I dont have Datetime module installed. Is there a way without using
DateTime??

On Tue, Aug 18, 2009 at 7:37 AM, Steve Bertrand <st...@ibctech.ca> wrote:

>  Mihir Kamdar wrote:
> > Hi,
> >
> > I want to write a script whose input data would be a csv file and records
> > would be as follows:-
> >
> > 60020003076570*,2,*20-SEP-08.01:09:18,,*04-NOV-08*
> > ,10000,INR,,VOUCHER_BATCH_20080919_00014,2C,,0
> > 30000000026495*,5,*20-SEP-08.01:09:57,,*31-DEC-09*
> > ,100000,INR,,VOUCHER_BATCH_20080919_00024,1K,,0
> > 30000000027480,*2,*20-SEP-08.01:09:57,,*31-DEC-08*
> > ,100000,INR,,VOUCHER_BATCH_20080919_00024,1K,,0
> >
> > Here I want to compare whether the 5th field, which is the date field
> > is *earlier
> > than 31-Mar-09 and 2nd field value is 2.*
> >
> > If yes, then I will take that record and store it in another file.
> >
> > Please help me as to how do I compare dates, preferably with some sample
> > code.
> >
> > I started coding for this as below, but am stuck on how to compare date
> in
> > my input with another date.
> >
> > #!/usr/bin/perl
> > use strict;
> > use warnings ;
> >
> > open (my $IN_FILE,"<","testdata.txt") or die $!." file not found" ;
> > while (my $line=readline($IN_FILE))
> > {
> >         my @cdr=split (/,/, $line) ;
> >         if($cdr[5]
> >         .............
> >         .............
> > }
>
> For fun, and to try out a few things I came across in Damian's book. I
> use DateTime to manage all aspects of dates and times. The code below
> assumes that all records will always be in the exact same format.
> Criticism welcome:
>
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> use DateTime::Format::Strptime;
>
> my $EXTRACTION_LAYOUT = '@16 A1 @40 A9';
>
> VOUCHER_RECORD:
>
> while ( my $record = <DATA> ) {
>
>    my ( $important_num, $date_string )
>        = unpack $EXTRACTION_LAYOUT, $record;
>
>    next VOUCHER_RECORD if $important_num != 2;
>
>    my $static_date = DateTime->new(
>                        year => 2009,
>                        month => 3,
>                        day => 31
>                        );
>
>
>    # turn the extracted date string into a DateTime object
>
>    my $date_formatter
>        = new DateTime::Format::Strptime( pattern => '%d-%b-%y' );
>
>    my $voucher_date
>        = $date_formatter->parse_datetime($date_string);
>
>
>    # compare the DateTime compiled dates
>
>    if ( DateTime->compare( $static_date, $voucher_date )) {
>
>        print "Voucher ${voucher_date} is prior to ${static_date}" .
>              ".... and the important number is 2\n";
>    }
> }
>
> __DATA__
>
> 60020003076570*,2,*20-SEP-08.01:09:18,,*04-NOV-08*,10000,INR,,VOUCHER_BATCH_20080919_00014,2C,,0
>
> 30000000026495*,5,*20-SEP-08.01:09:57,,*31-DEC-09*,100000,INR,,VOUCHER_BATCH_20080919_00024,1K,,0
>
> 30000000027480,*2,*20-SEP-08.01:09:57,,*31-DEC-08*,100000,INR,,VOUCHER_BATCH_20080919_00024,1K,,0
>
> Steve
>

Reply via email to