Date::Calc (or, heaven forbid, Date::Manip) is probably
overkill since you only want age in years. All you really
want to know is whether the birthday has passed this year.
sub age {
# Assuming $birth_month is 0..11
my ($birth_day, $birth_month, $birth_year) = @_;
my ($day, $month, $year) = (localtime)[3..5];
$year += 1900;
my $age = $year - $birth_year;
$age-- unless sprintf("%02d%02d", $month, $day)
>= sprintf("%02d%02d", $birth_month, $birth_day);
return $age;
}
Of course, if you're only using this on a person's birthday,
all you need to do is subtract their birth year from the
current year :-)