[cgiapp] Graceful Error Handling in CGI::App (compile / init stages)
Peter Karman
peter at peknet.com
Wed Jul 7 10:03:26 EDT 2010
Michael Peters wrote on 7/7/10 8:43 AM:
>
> It's verbose, but the only thing I know of is:
>
> BEGIN {
> eval { require Data::Dumper; Data::Dumper::import() };
> die "Can't find Data::Dumper module: $@" if $@;
> }
>
> repeated for each one.
or
my @modules = qw( Data::Dumper );
for my $mod (@modules) {
eval "use $mod";
die "Can't find $mod module: $@" if $@;
}
You can use 'use Foo' in a string eval and still get the defer-till-runtime help
of $@ and 'require':
# 'use' evaluated at compile-time
% perl -e 'print Data::Dump::dump(\{}),$/; use Data::Dump'
\{}
# 'require' evaluated at
% perl -e 'print Data::Dump::dump(\{}); require Data::Dump'
Undefined subroutine &Data::Dump::dump called at -e line 1.
# like 'require', deferred till run-time
% perl -e 'print Data::Dump::dump(\{}),$/; eval "use Data::Dump";'
Undefined subroutine &Data::Dump::dump called at -e line 1.
But Michael is correct about the security issues and the logs. Love your logs;
they will love you back.
--
Peter Karman . http://peknet.com/ . peter at peknet.com
More information about the cgiapp
mailing list