誕生日を指定すると、現時点の年齢を算出し、返します。

■ サブルーチン名

GetAge

■ 引数

誕生日となる日付を西暦、月、日に分けて指定します。

  1. 西暦(1900 〜 2023)
  2. 月(1 〜 12)
  3. 日(1 〜 31)

■ 戻値

  1. 現時点の年齢(数え年ではありません。)

■ 使い方

今日が西暦2002 年 3 月 25 日とします。誕生日が 西暦 1971 年 3 月 28 日として現時点での年齢を算出する場合には、

$age = &GetAge(1971, 3, 28);

とします。$age には、30 が与えられます。このサブルーチンは、時間を見ていませんので、もし今日が誕生日と同日の西暦 2002 年 3 月 28 日だとすると、$age には、31 が与えられます。

指定する誕生日は、西暦 1900 年 1 月 1 日からご利用になる日までです。もし、誕生日に未来の日付を指定した場合には、マイナスの値が返ってきます。また、不適切な引数を与えると、何も返りません。

■ サブルーチン

sub GetAge {
	my($birth_year, $birth_mon, $birth_day) = @_;
	unless($birth_year && $birth_mon && $birth_day) {return '';}
	if($birth_year =~ /[^0-9]/) {return '';}
	if($birth_mon =~ /[^0-9]/) {return '';}
	if($birth_day =~ /[^0-9]/) {return '';}
	if($birth_year < 1900 || $birth_year > 2023) {return '';}
	if($birth_mon < 1 || $birth_mon > 12) {return '';}
	if($birth_day < 1 || $birth_day > 31) {return '';}

	my($s, $m, $h, $D, $M, $Y) = localtime(time);
	my $age = $Y + 1900 - $birth_year;
	if($M+1 < $birth_mon || ($M+1 == $birth_mon && $D < $birth_day) ) {
		$age --;
	}
	return $age;
}

戻る

会社案内 | 特定商取引法に基づく表示 | プライバシーポリシー | 当サイトへのリンクについて | お問い合わせ