Я на самом деле немного удивлен, что use PDL qw()
делает что-то отличное от use PDL
.На самом деле, я не понимаю, как это возможно: код из PDL::import
не обращает внимания на свои аргументы.Для этой цели был создан другой модуль под названием PDL::Lite
, который эквивалентен:
use PDL::Core '';
use PDL::Ops '';
use PDL::Primitive '';
use PDL::Ufunc '';
use PDL::Basic '';
use PDL::Slices '';
use PDL::Bad '';
use PDL::Version;
use PDL::Lvalue;
Некоторые дополнительные функции из обычного use PDL
вырезаны, и ни одна из функций не импортирована.(PDL::Lvalue
и PDL::Version
ничего не экспортируют.)
На ваш второй вопрос, когда вы use PDL::Lite
, вы все равно можете получить в конструкторе pdl
с PDL->pdl(1, 2, 3)
.Вы не можете сказать PDL::pdl(1, 2, 3)
, потому что конструктор фактически определен в пакете PDL::Core
.Пойди разберись.Итак, PDL::Core::pdl(1, 2, 3)
делает то, что вы имели в виду, но это не очевидный выбор.