use Date::Calc qw(Today Add_Delta_YMD Days_in_Month); my ($year, $month, undef) = Add_Delta_YMD( Today(), 0, -1, 0 ); printf "start: %04d-%02d-%02d\n", $year, $month, 1; printf " end: %04d-%02d-%02d\n", $year, $month, Days_in_Month($year, $month);