in reply to days between dates

Your first step should be to print out the contents of your variables at each step and see where your assumptions become false.

The zeroth step should be to use a CPAN module to do the date math for you since it will handle all the edge cases you missed.