perl - Mensaje de módulo perdido personalizado
error-handling perl-module (2)
Puede usar un gancho @INC
para hacer esto:
BEGIN { push @INC, sub { Carp::croak "Couldn''t find $_[1]" } }
use Xyz;
Me gustaría poder enviar un mensaje de error personalizado a STDERR si uno de mis módulos no se puede encontrar.
Por lo que entiendo si importo el módulo con el comando de uso, la falta del módulo se descubrirá antes de que se ejecute el script, lo que plantea un problema importante para lograr el resultado que estoy buscando.
Básicamente, lo que estoy buscando es un equivalente de Perl para capturar la excepción ImportError en Python.
Para detectar una excepción en Perl, debe usar el operador eval
. Si el código pasado a eval
muere, entonces el mensaje de error se pone en $@
lugar para que lo use como quiera.
Se vería algo como esto
use strict;
use warnings;
use 5.010;
BEGIN {
eval ''use Xyz'';
if ( $@ ) {
if ( $@ =~ /Can''t locate (/S+)/ ) {
warn "$1 isn''t installed";
}
else {
die $@;
}
}
}
say ''Continuing...'';
salida
Xyz.pm isn''t installed at E:/Perl/source/trap use.pl line 9.
Continuing...