I am getting and error: Day '32" out of range 1..31 at ... line 35 for this line: my ( $d, $m, $y ) = ( localtime timelocal 0, 0, 12, $_, 0, $dyr )[ 3, 4, 5 ];
and I don't quite know why.. The value for "$_" should be reset to 1 after Jan 31st.. Output is created through only January 31 Thanks J. >>> John W.Krahn <[EMAIL PROTECTED]> 11/21/2007 9:26 PM >>> On Wednesday 21 November 2007 09:40, Gerald Wheeler wrote: > John, > I have modified my script as per your suggestions: > > > #!/usr/bin/perl > > use strict; > use warnings; > > my $ifiln = 'abc.csv'; > my $ofiln = 'xyz.txt'; > > # get start year (yyyy) from command line > my($rsvr, $rdt, $dyr) = @ARGV; > > print "Year input argument: $ARGV[0] - $ARGV[1] - $ARGV[2]\n"; > print "Year input: $dyr, $rsvr, $rdt\n"; > > open RDATA, $ifiln or die "can not open file: $ifiln: $!\n"; > while(my $line = <RDATA>) > { > my @data_line = split( /,/, $line ); > push @rsvrs, { jday => $data_line[ 0 ], rval => $data_line[ 1 ] }; > } > > close(RDATA); > > open ORDATA, '>', $ofiln or die "Cannot open '$ofiln' $!"; > foreach(@rsvrs) > { > print ORDATA "insert some text1,"; > print ORDATA $_->{ jday }; > > print ORDATA "insert some text2 $rsvr,"; > print ORDATA "insert some text3 $rdt,"; > > print ORDATA $_->{ rval }; > > print ORDATA "some text4"; > print ORDATA "Calendar Date 2007/11/20 format - How? ($dyr)"; > > print ORDATA "some text5\n"; > } > > close(ORDATA); It looks like you may need something like this: #!/usr/bin/perl use strict; use warnings; use Time::Local; my $ifiln = 'abc.csv'; my $ofiln = 'xyz.txt'; # get start year (yyyy) from command line @ARGV == 3 or die "usage: $0 rsvr rdt dyr\n"; my ( $rsvr, $rdt, $dyr ) = @ARGV; print "Year input argument: $ARGV[0] - $ARGV[1] - $ARGV[2]\n"; print "Year input: $dyr, $rsvr, $rdt\n"; open RDATA, '<', $ifiln or die "can not open file: $ifiln: $!\n"; my @rsvrs; while ( my $line = <RDATA> ) { chomp $line; my @data_line = split /,/, $line; $rsvrs[ $data_line[ 0 ] ] = $data_line[ 1 ]; } close RDATA; open ORDATA, '>', $ofiln or die "Cannot open '$ofiln' $!"; my $current_doy = ( localtime )[ 7 ]; foreach ( 1 .. $#rsvrs ) { my ( $d, $m, $y ) = ( localtime timelocal 0, 0, 12, $_, 0, $dyr )[ 3, 4, 5 ]; my $date = sprintf '%04d/%02d/%02d', $y + 1900, $m + 1, $d; print ORDATA "insert some text1,", $_, "insert some text2 $rsvr,", "insert some text3 $rdt,", defined $rsvrs[ $_ ] ? $current_doy > $_ ? $rsvrs[ $_ ] : 'NULL' : 'NULL', "some text4", "Calendar Date $date ($dyr)", "some text5\n"; } close ORDATA; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/ -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/