Невозможно загрузить `Cwd` (и другие неосновные модули) во время выполнения

Представьте, что я хочу загрузить модуль во время выполнения. Я ожидал, что это сработает

use warnings;
use strict;

eval {
    require Cwd; 
    Cwd->import;
};
if ($@) { die "Can't load Cwd: $@" }

say "Dir: ", getcwd;

но это не так, согласноBareword "getcwd" not allowed ....

Cwd экспортgetcwd по умолчанию. Я попытался дать имя (имена) функцииimport и я попробовал с другими его функциями. Это работает с полным именем,say Cwd::getcwd, так что я думаю, что это не импорт.

Это работает как попытка для нескольких других основных модулей, которые я пробовал, например

use warnings;
use strict;

eval { 
    require List::Util; 
    List::Util->import('max');
};
if ($@) { die "Can't load List::Util: $@" }

my $max = max (1, 14, 3, 26, 2); 
print "Max is $max\n";

ПРИМЕЧАНИЕ добавлено Видимо, вызовы функций с круглыми скобками дают подсказку компилятору. Однако, на мой взгляд, вопрос остается, пожалуйста, смотритеРЕДАКТИРОВАТЬ в конце. Кроме того, такая функция, какfirst BLOCK LIST из модуля выше не работает.

Тем не менее, этоне работать на несколько (хорошо зарекомендовавших себя) неосновных модулей, которые я попробовал. Хуже и более запутанно, он не работает даже с полностью определенными именами.

Я могу представить, что используемый символ (функция) не известен во время компиляции, еслиrequire используется во время выполнения, но работает для (других) основных модулей. Я думал, что это стандартный способ загрузки во время выполнения.

Если мне нужно использовать полные имена при динамической загрузке, тогда хорошо, но что это за несоответствие? И какделать Я загружаю (и использую) неосновные модули во время выполнения?

Я тоже пробовал сModule::Load::Conditional и это не сработало.

Чего мне не хватает, и как загружать модули во время выполнения? (Пробовал с5.16 а также5.10.1.)

РЕДАКТИРОВАТЬ

Как отмеченоМэтт ДжейкобЗвонок с круглыми скобками работает,getcwd(), Однако, учитываяperlsub

NAME LIST; # Скобки необязательны, если предварительно объявлены / импортированы.

это означает, что импорт не сработал и вопрос почему остается.

Кроме того, использование различного синтаксиса в зависимости от того, как загружен модуль, не очень хорошо. Кроме того, я не могу заставить работать неосновные модули, особенно те с синтаксисом, какСписок :: MoreUtils есть.

Ответы на вопрос(1)

Ваш ответ на вопрос