use Time::Local qw( timelocal_nocheck ); my @time_data; @time_data = localtime(); $time_data[4]++; # Next month. $time_data[3] = 0; # Last day of previous month. @time_data = localtime(timelocal_nocheck(@time_data)); my $year = $time_data[5]+1900; my $month = $time_data[4]+1; # Make 1-based my $last_day = $time_data[3]; printf("The last day of this month (%04d/%02d) is %d.\n", $year, $month, $last_day ); __END__ output ====== The last day of this month (2005/01) is 31.