誕生日を指定すると、現時点の年齢を算出し、返します。
GetAge()
誕生日となる日付を西暦、月、日に分けて指定します。
今日が西暦2008年12月8日とします。誕生日が 西暦1970年6月30日として現時点での年齢を算出する場合には、
my $age = &GetAge(1970, 6, 30);
とします。$age には、38 が与えられます。
指定する誕生日は、西暦1900年1月1日から、現在の日付けまでです。もし、誕生日に未来の日付を指定した場合には、マイナスの値が返ってきます。また、不適切な引数を与えると、何も返りません。
sub GetAge {
my($year, $mon, $day) = @_;
unless($year && $mon && $day) {return;}
if($year < 1900 || $year > 2023) {return;}
if($mon < 1 || $mon > 12) {return;}
if($day < 1 || $day > 31) {return;}
my($s, $m, $h, $D, $M, $Y) = localtime(time);
my $age = $Y + 1900 - $year;
if($M+1 < $mon || ($M+1 == $mon && $D < $day) ) {
$age --;
}
return $age;
}