Perl Script to calculate and show age based on medical standards.

It’s as follows :-

sub age {
    use Time::Local;
    use Date::Calc qw(Delta_Days);
    # Assuming $birth_month is 0..11
    my ($birth_day, $birth_month, $birth_year) = @_;
    my ($day, $month, $year) = (localtime)[3,4,5];
    $year += 1900;
    $month+=1;
    my @today_sec = localtime();
    my $time = timelocal(@today_sec);
    my @birthday_sec = (0, 0, 0, $birth_day, $birth_month, $birth_year);
    my $birthtime = timelocal(@birthday_sec);
    my @birthday=($birth_year, $birth_month, $birth_day);
    my @today=($year, $month, $day);
    my $days = Delta_Days(@birthday, @today);
    my $netage="";
    if($days > 28) {
        my $age = $year - $birth_year;
        $age-- unless sprintf("%02d%02d", $month, $day)
          >= sprintf("%02d%02d", $birth_month, $birth_day);
        my $mnth=($month>$birth_month)?$month-$birth_month:12+($month-$birth_month);
        my $mnth_total=($age*12)+$mnth;
        if($mnth_total > 0 && $mnth_total < 4) {
            my $week=int($days/7);
            if($week > 1) {
                $netage = $week." Weeks";
            } else {
                $netage = $week." Week";
            }
        } elsif($mnth_total >= 4 && $mnth_total < 24) {
            $netage = $mnth_total." Months";
        } elsif($age >= 2 && $age < 18) {
            $netage = $age." Years";
            if($mnth == 1) {
                $netage .= " ".$mnth." Month";
            } elsif($mnth > 1) {
                $netage .= " ".$mnth." Months";
            } else { }
        } elsif($age >= 18) {
            $netage = $age." Years";
        } else { }
    } else {
        $netage = $days." Days";
    }
    return $netage;
}

print &age(6,4,1990);

Output :-

24 Years