Thanks I'll try in..
J.

>>> John W.Krahn <[EMAIL PROTECTED]> 11/21/07 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/


Reply via email to