use Date::Calc qw( Decode_Date_EU Today leap_year Delta_Days ); $date = ; # get birthday ($year1,$month1,$day1) = Decode_Date_EU($date); ($year2,$month2,$day2) = Today(); if (($day1 == 29) && ($month1 == 2) && !leap_year($year2)) { $day1--; } if ( (($year2 - $year1) > 18) || ( (($year2 - $year1) == 18) && (Delta_Days($year2,$month1,$day1, $year2,$month2,$day2) >= 0) ) ) { print "Ok - you are over 18.\n"; } else { print "Sorry - you aren't 18 yet!\n"; }