use Time::Local "timelocal"; my ($month, $mday, $year) = split /-/, "01-23-2004"; my $wday = (localtime(timelocal(0, 0, 0, $mday, $month-1, $year-1900)))[6];