perl error-handling perl-module

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...