Ответ 1
Создайте свой собственный модуль. Но если вы сделаете пакет в этом модуле, те strftime
и т.д. Будут импортированы в другое пространство имен. Вы можете сделать litle hack, чтобы сделать этот smiple:
MyModules.pm:
use strict;
use XML::Parser;
use XML::Simple;
use DBI;
use DBD::DB2::Constants;
use POSIX qw( strftime );
use Storable qw(dclone);
use Data::Dumper;
use Carp;
Обратите внимание, что в этом .pm не было ключевого слова package
. Ваш script:
use MyModules;
Поместите этот .pm в тот же каталог с script или добавьте путь поиска модулей во время выполнения:
use lib '/my_modules_dir/';
use MyModules;
Использование команд do и требуется не рекомендуется, так как они не проверяют синтаксис при запуске script. Конечно, вы можете поместить их в блок BEGIN, но я думаю, что его сложный способ и вообще BEGIN{ require ..}
совпадает с use
UPD: ikegami отметил, что проблема не работает, когда вы используете это из многих модулей. Независимо от информации о стартовой задаче (он хочет использовать ее из основного script), плохо добавьте информацию о том, как использовать это из многих модулей, чтобы мой друг мог чувствовать себя лучше. Добавить в конец MyModules.pm:
delete $INC{'MyModules.pm'};
1;