Я переместил часть скрипта в модуль, и теперь единственная ошибка, которую я получаю, когда я делаю что-то неправильно, - это «Неопределенная подпрограмма», даже когда реальная ошибка такова: Я ошибочно набрал переменную или забыл закрывающий парик, или оставил половину двоеточия.Perl выдает неопределенную подпрограмму в модуле вместо правильной ошибки
Единственный способ найти настоящую ошибку - скопировать всю вещь в скрипт и запустить ее таким образом. Это очень утомительно. Я что-то делаю неправильно, или это только то, как модули должны работать?
Вот очень простой пример, который показывает проблему:
Модуль:
#!/usr/bin/env perl
package CalledError;
use Exporter qw(import);
our @EXPORT_OK=qw(do_build_stor_pools);
use strict;
use warnings;
use feature qw(say);
sub do_build_stor_pools {
say "now in CalledError do_build_stor_pools";
#my $undef_var="uncomment this to fix";
say $undef_var;
return;
}
Вызов сценария:
#!/usr/bin/env/perl
use strict;
use warnings;
my $buildstor_mod="CalledError";
eval "require $buildstor_mod";
$buildstor_mod->import();
CalledError::do_build_stor_pools();
Выполнить это так, чтобы получить Undefined subroutine &CalledError::do_build_stor_pools called at calling_test.pl line 11.
Раскомментируйте определение $undef_var
, чтобы заставить его работать.
Спасибо! Я думал, что однажды попытался, но я не должен был делать это правильно. – Adina