Running a Perl Script with Cron
Call perl by absolute path since cron's PATH is minimal, and set any PERL5LIB your modules need because cron doesn't load your profile.
The crontab line
30 2 * * * /usr/bin/perl /opt/app/report.pl >> /var/log/perl-job.log 2>&1
Find the path with which perl and use it verbatim.
Missing modules under cron
If a module loads in your shell but not in cron, set the library path: 30 2 * * * PERL5LIB=/opt/app/lib /usr/bin/perl /opt/app/report.pl.
perlbrew
perlbrew installs perl under your home dir. Use its full path, e.g. ~/perl5/perlbrew/perls/perl-5.38/bin/perl.
FAQ
How do I run a Perl script from cron?
Use the absolute perl path: 30 2 * * * /usr/bin/perl /opt/app/report.pl. Find it with which perl.
Why can't cron find my Perl module?
Cron does not set PERL5LIB from your profile. Add PERL5LIB=/path/to/lib inline in the crontab line.
How do I use a perlbrew perl in cron?
Reference its full path under ~/perl5/perlbrew, since perlbrew perls are not on cron PATH.