Если вы не делаете это в качестве учебного упражнения, лучшим подходом является использование модуля синтаксического анализа конфигурации из CPAN. Вот иллюстрация с использованием Config :: General , который достаточно гибок, чтобы вместить ваш необычный разделитель, и обеспечивает хороший доступ в стиле OO к параметрам конфигурации. [Примечание: чтобы использовать этот пример, вам сначала нужно установить модуль Config::General
. Я упоминаю об этом, потому что, похоже, у вас возникли проблемы с примером Sinan, который также требует установки модуля из CPAN.]
use strict;
use warnings;
use Config::General;
my $c = Config::General->new(
-ConfigFile => $ARGV[0],
-SplitPolicy => 'custom', # Define | as our delimiter.
-SplitDelimiter => qr/\s*\|\s*/,
-ExtendedAccess => 1, # Allow OO-style access.
);
print $_, "\n" for
$c->PING_TTL,
$c->CLIENT_PORT,
$c->FTP_SERVER,
$c->FOO,
;
Тестовый файл конфигурации:
PING_TTL | 1 # default ping interval is 1 second
CLIENT_PORT | 7870 # default port
FTP_SERVER | 192.162.522.222 # ftp server ip address
FOO | abcd # Make sure we can handle # and | in comments
Выход:
1
7870
192.162.522.222
abcd