Acme-DoOrDie
view release on metacpan or search on metacpan
lib/Acme/DoOrDie.pm view on Meta::CPAN
} elsif (defined($want)) {
$result = do($name);
} else {
do($name);
}
$syntax = $@;
if (! exists($INC{$name})) {
croak("Can't locate $name: $! (\@INC contains: ".join(" ",@INC).")");
}
if ($syntax ne "") {
croak($syntax);
}
if ($want) {
@result;
} elsif (defined($want)) {
$result;
}
}
BEGIN {
*do = \&do_or_die;
our @EXPORT = qw(
do_or_die
);
our @EXPORT_OK = qw(
do_or_die
do
);
}
use Exporter
qw(import);
1;
__END__
=head1 NAME
Acme::DoOrDie - do-file replacement that dies on errors
=head1 SYNOPSIS
use Acme::DoOrDie;
do_or_die("config.pl");
=head1 DESCRIPTION
Error handling for the C<do(FILENAME)> built-in function is
inconvenient. The main problem is that you need to examine more than
just the return value to distinguish a file-not-found condition from a
successful invocation of a file that ends with these two statements:
$! = ENOENT;
undef;
(The L<autodie> module can't help you since it doesn't support the
C<do> function.)
This module provides the replacement function C<do_or_die> that reports
any error by throwing an exception. The same function is also available
under the alias C<do> (not exported by default).
=head1 EXPORTS
=over
=item By default:
=over
=item do_or_die
=back
=item On request:
=over
=item do
=back
=back
=head1 AUTHOR
Bo Lindbergh E<lt>blgl@stacken.kth.seE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright 2017 Bo Lindbergh
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself, either Perl version 5.8.8 or, at
your option, any later version of Perl 5 you may have available.
=cut
( run in 0.863 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )