Не легко, и поэтому полагаться на глобальные именованные переменные проблематично c. Вместо этого ваш конфигурационный файл должен возвращать одну структуру данных (например, хэш-ссылку, чтобы вы могли назвать ее части) и загружать ее с do в лексическую переменную:
use strict;
use warnings;
my $file = '/path/to/foo.conf';
my $data = do $file;
die "Failed to parse $file: $@" if !defined $data and $@;
die "Failed to read $file: $!" if !defined $data;
Make Обязательно либо передайте абсолютный путь к файлу (рекомендуется, чтобы не зависеть от текущего рабочего каталога), либо добавьте относительный путь с помощью ./
, в противном случае do
(и require
) будет искать @INC
для файла, который с Perl 5.26 не содержит текущего рабочего каталога. См. Path :: This , чтобы узнать, как получить абсолютный путь относительно текущего файла.