use strict; use warnings; my $n = 0; my @YMDAY = map $n += $_, qw<0 0 31 28 31 30 31 30 31 31 30 31 30 31>; my $today = days(2013, 10, 3); my $bday = days(1970, 3, 9); printf "You are %d days old.\n", $today - $bday; sub days { my ($year, $month, $day) = @_; my $days = $year * 365 + $YMDAY[$month] + $day - 1; $days-- if $month <= 2 and !($year % 4) && $year % 100 || !($year % 400); $year++, $days-- if $year < 0; $days + int($year / 4) - int($year / 100) + int($year / 400); } __END__ You are 15914 days old.