Probably not a perl problem but either a sudo permission problem or an environment variable problem.
- What account is kicking off the crontab? A users or roots? If a user, does that user have sudo permissions -- if it's roots crontab, you don't need to sudo at all.
- There may be environment variables (JAVA_HOME and PATH come to mind) that are set when you kick off from the command line but are not present in the cron environment. Tomcat (catalina.sh) will invoke the setenv.sh script in order to set environment variables. By default that script is either blank or not there. Just create it and and your needed env settings there.