(Я предполагаю, что программа с именем config.pl
устанавливает значения конфигурации, к которым вы хотите получить доступ в test.pl
. Вы не проясняете это в своем вопросе.)
Простой пример.Если config.pl
выглядит так:
#!/usr/bin/perl
$some_var = 'Some value';
Тогда вы можете написать test.pl
, чтобы выглядеть так:
#!/usr/bin/perl
use feature 'say';
do './config.pl';
say $some_var;
Но это ужасная идея по многим причинам.Не в последнюю очередь потому, что он перестает работать, когда вы добавляете use strict
и use warnings
к любому из файлов (и вы должны стремиться иметь use strict
и use warnings
в всех вашего Perl-кода).
Так какой же подход лучше?Превратите вашу конфигурацию в правильный модуль, который возвращает хеш (в моем примере выше есть только одна скалярная переменная, но хеш дает вам возможность доставить много значений в одной переменной).Простой подход может выглядеть следующим образом.
Модуль с именем MyConfig.pm
:
package MyConfig;
use strict;
use warnings;
use parent 'Exporter';
our @EXPORT = qw[config];
sub config {
my %config = (
some_var => 'Some value',
);
return %config;
}
1;
И test.pl
вот так:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use FindBin '$Bin';
use lib $Bin;
use MyConfig;
my %config = config();
say $config{some_var};
Получив этоработая, вы можете добавить улучшения, такие как синтаксический анализ хеша %config
из внешнего файла (возможно, хранящегося в JSON), а затем разрешение различных конфигураций для разных сред (например, разработка или производство).
Это немногобольше работы, чем ваш нынешний подход, но он гораздо более гибкий.И вы можете использовать strict
и warnings
.