У меня есть модуль Perl .pm
файла, что containts моих подпрограмм и это выглядит следующим образом:Perl `использование qw` или импортировать Подпрограммы с вечера файлы
package test;
use strict;
use vars qw($VERSION @ISA @EXPORT $ERROR $NAME);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = (
sub1
sub2
err1
err2
);
#...etc...
Теперь у меня есть pl
файла, то, что нужно импортировать подпрограммы , но не каждый, только если они находятся в настроенном списке. Например:
@subs = ('sub1', 'sub2'); # need to load sub1 & sub2, but do not load err1 & err2
или
@subs = ('sub1', 'err1'); # need to load sub1 & err1, but do not load sub2 & err2
Как я могу это сделать?
Я пытался это сделать, но не работает:
my @subs = ('sub1', 'sub2');
use test @subs;
Есть ли способ, чтобы загрузить только необходимые функции? И то, что необходимо, читается из SQL или файла конфигурации или любым другим способом ...
Модули импортируют поддоны в другие «пространства имен», поэтому их можно вызывать по объявленному имени, а не полностью *. Поэтому вместо того, чтобы выборочно импортировать субтитры, обратитесь к ним по их полному имени. (Ваш фрагмент: 'test :: sub1()', 'test :: sub2()' и т. Д.). –
Кроме того, '@ EXPORT' экспортирует все по умолчанию. Таким образом, все подсайты уже находятся в скрытом файле 'pl'. Вы можете выборочно * импортировать *, когда субсайты находятся в '@ EXPORT_OK'. –
@LinusKleen: Если я использую это полное имя, загрузите в память только используемые функции? – netdjw