use Date::Tie; tie my %dt, 'Date::Tie', weekday => 3, week => 5, weekyear => 2005, hour => 0, minute => 0, second => 0; print $dt{$_}, " " for qw( weekyear week weekday year month day hour epoch ); print "\n"; # 2005 05 3 2005 02 02 18 1107302400