Характер области действия use
является документированной функцией:
use Module
Импортирует некоторую семантику втекущий пакет из названного модуля, обычно путем псевдонимов определенных подпрограмм или имен переменных в вашем пакете.
Вы можете сделать то, что вы хотите, вернувшись к каменному веку, как в следующем примере, но, пожалуйста,'t.
Использование MyModule
в качестве замены для DBI
:
package MyModule;
use Exporter 'import';
our @EXPORT = qw/ foo /;
sub foo { print "$_[0]!\n" }
1;
, а затем вызов MyModule::foo
из scriptA.pl
foo "from scriptA";
и из scriptB.pl
foo "from scriptB";
все запускается из основной программы
#! /usr/bin/perl
use warnings;
use strict;
use MyModule;
do "scriptA.pl" or die;
do "scriptB.pl" or die;
print "done.\n";
и дает следующий вывод:
from scriptA!
from scriptB!
done.
Вы также можете отключитьфункция обеспечения безопасности при работе с неприятными eval
играми, но, пожалуйста, тоже не делайте этого.
Если ваш дизайн нуждается в улучшении - возможно, scriptA
и scriptB
принадлежат к одному пакету - это будетгораздо лучшая инвестиция вашего времени.В противном случае прикусите пулю и потратьте девять нажатий клавиш.
Обратите внимание, что выполнение библиотек Perl во время выполнения с помощью do
или require
является серьезно устаревшим подходом.Документация perlmod описывает современный подход.