気象では、day of the year という1月1日から日数を使うのでこれを計算するスクリプトを示す。
なお、day of the yearでは、1月1日=1, 1月2日=2,.. と数える。
Perlには、localtimeという便利な関数があるのでこれを活用する。
#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
my $year = '2006';
my $month = '07';
my @days = (1 .. 31);
my @hours = '0';
my $min = '0';
my $sec = '0';
foreach my $day (@days) {
my $time_nec = timelocal($sec,$min,$hour,$day,$month -1,$year);
my $time_ref = timelocal(0,0,0,1,0,$year);
my $doy = int((${time_nec}-${time_ref})/86400)+1;
$doy = sprintf("%03d",$doy);
print "$doy\n";
}
close(FILE)