Я знаю, как использовать метод stati c (он работает в hello worlds):
require $pathToFile;
{
no strict 'refs';
&{$methodName}();
}
Но он не работает с другими, более сложными методами, у меня ошибка типа:
Неопределенная подпрограмма и FunctionRunner :: funcTest вызывается в (...)
Я пробовал что-то вроде:
require $pathToFile;
{
no strict 'refs';
$pathToFile->{$methodName}->();
}
И ни одна из функций не работает:
Неопределенная подпрограмма & main :: вызывается в (...)
- Почему main, когда я хотел использовать $ methodName из файла $ pathToFile ??
Я обнаружил, что вызывает эти методы с помощью eval, поэтому я попробовал:
my $testResult = eval { $pathToFile->{$methodName}->() };
или
{
no strict 'refs';
my $method = $pathToFile->{$methodName};
my $testResult = eval( "main::$method()" );
}
, и в обеих попытках не было ошибок, но просто не было ' я что-то делаю. Скрипт завершен, а метод не вызван.
Почему это не работает и как в этом случае вызвать метод из другого скрипта?