in reply to Script runs from command line but not via crontab

I would have to agree with kirillm for the most part. When a script runs on the command line but fails in crontab, it's usually an environment variable issue. The cron environment is very limited and it does not inherit the settings from your login shell, unless you take a lot of care and trouble to make it happen.

The posters above have given suggestions to get your script to give up error messages and place them into files to be read. What I'll add is that you can get your environment variables, if you're in bash/ksh, with the command:
set
and that you probably should, while you're debugging your script, add something like:
print `set`;
into your script, just to see what the cron environment is (assuming you've redirected your script output to a file as others have suggested).

Finally, one style suggestion. It is much easier to do date manipulations with a module such as Date::Calc or Date::Manip than manually.