Another use of POSIX::strptime:
use strict;
use warnings;
use POSIX::strptime;
while (<DATA>) {
my ($date) = /^([^,]+)/;
my $doy = ( POSIX::strptime( $date, '%d-%b-%C' ) )[-1] + 1;
print "Date: $date; DOY: $doy\n";
}
__DATA__
1-Apr-2012,615265,2.4,0,0,0,0,0,0,0,0,0,0,0.00,0.00,0.00,0.00,0.00
2-Apr-2012,615265,2.4,0,0,0,0,0,0,0,0,0,0,0.00,0.00,0.00,0.00,0.00
3-Apr-2012,615265,2.4,0,0,0,0,0,0,0,0,0,0,11.60,11.60,11.60,11.60,11.6
+0
Output:
Date: 1-Apr-2012; DOY: 92
Date: 2-Apr-2012; DOY: 93
Date: 3-Apr-2012; DOY: 94
Hope this helps!