in reply to Date::Day problem?!

You should be using
$today = &day($mon,$day,$year) ;
instead of
$today = &day($day,$mon,$year) ;
The following does the same, and it uses only core modules:
use POSIX qw( strftime ); use Time::Local qw( timegm ); print strftime("%a", gmtime(timegm(0, 0, 0, $day, $mon-1, $year)));
or for current local time:
use POSIX qw( strftime ); use Time::Local qw( timelocal ); print strftime("%a", localtime);
Use %A instead of %a if you are interested in the full name of the day instead of the three letter abbrieviation.