title: How to go back months in Perl taking account of different days in month?
body: <p>I was wondering if there is an in-built Perl function that adjusts the date if you take a month from it. E.g. if date is the 31st, it will adjust to be the end of the previous month if it doesn't have 31 days. </p>
  
  <p>I would just change it to 30th easily if it weren't for the months with 31 days next to each other (Dec/Jan, Jul/Aug) and February. 
  I just want to store the date a certain amount of time away from the current date, e.g. </p>
  
  <pre><code>my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  
  $current_date = join("-", (1900+$year), ($mon+1), $mday);
  $one_month_ago = join("-", (1900+$year), ($mon), $mday);
  $one_year_ago = join("-", (1899+$year), ($mon+1), $mday);
  </code></pre>
  
  <p>I can deal with the February instance as it only applies to years, but if this was taken on the 31st December 2012 then taking away a month would mean 31st Nov 2012, which of course didn't exist. I thought I would ask if there was a function before complicating things for myself... thanks :)</p>