Похоже на то что предложил hizel
Есть
Код: Выделить всё
Account "dspam" {
Owner root
Domain spamd.host-food.ru
Ip 92.243.74.50
Preset custom
SSL off
CGI on
SSI off
DiskLimit 56
UserLimit 78
CPULimit 0
MemLimit 0
ProcLimit 0
FtpLimit 10000
MailLimit 10000
DomainLimit 10000
WebDomainLimit 10000
MailDomainLimit 10000
DatabaseLimit 10000
DatabaseUserLimit 10000
BandwidthLimit 100000000
BandwidthUsage 0
}
Account "dspamsss" {
Owner myxaxa
Domain myxaxa.host-food.ru
Ip 92.243.74.150
Preset customs
SSL off
CGI on
SSI off
DiskLimit 3
UserLimit 3
CPULimit 0
MemLimit 0
ProcLimit 0
FtpLimit 100005
MailLimit 100006
DomainLimit 100003
WebDomainLimit 100008
MailDomainLimit 100009
DatabaseLimit 1000010
DatabaseUserLimit 100001
BandwidthLimit 1000000001
BandwidthUsage 1
}
Применяем скрипт
Код: Выделить всё
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my %boo = &lissyara_conf_read('lissyara.txt');
print Dumper(%boo);
sub lissyara_conf_read() {
my ($f) = @_;
my (%c, $k);
open(F, "<".$f) or die "Can't read file ".$f;
while (my $line = <F>) {
chomp($line);
next if $line =~ m/^(#|\{)/;
$k = $1 if $line =~ m/^Account\s\"(\w+)\"\s\{/;
$line =~ s/^((\s+)|(\t+))//gs if ($line =~ m/^((\s+)|(\t+))/);
if ($k) {
my ($v, $l) = split(/\s/, $line);
if (defined($l)) {
$l =~ s/\"//g if ($v eq 'Account');
$l =~ s/\n|\r//gs;
$c{$k}{$v} = $l;
}
}
}
close(F);
return %c;
}
Получаме
Код: Выделить всё
$VAR1 = 'dspamsss';
$VAR2 = {
'DiskLimit' => '3',
'UserLimit' => '3',
'MailDomainLimit' => '100009',
'Account' => 'dspamsss',
'CGI' => 'on',
'BandwidthUsage' => '1',
'BandwidthLimit' => '1000000001',
'Preset' => 'customs',
'MemLimit' => '0',
'DatabaseUserLimit' => '100001',
'SSL' => 'off',
'SSI' => 'off',
'ProcLimit' => '0',
'FtpLimit' => '100005',
'DatabaseLimit' => '1000010',
'Domain' => 'myxaxa.host-food.ru',
'Ip' => '92.243.74.150',
'Owner' => 'myxaxa',
'WebDomainLimit' => '100008',
'CPULimit' => '0',
'MailLimit' => '100006',
'DomainLimit' => '100003'
};
$VAR3 = 'dspam';
$VAR4 = {
'DiskLimit' => '56',
'UserLimit' => '78',
'MailDomainLimit' => '10000',
'Account' => 'dspam',
'CGI' => 'on',
'BandwidthUsage' => '0',
'BandwidthLimit' => '100000000',
'Preset' => 'custom',
'MemLimit' => '0',
'DatabaseUserLimit' => '10000',
'SSL' => 'off',
'SSI' => 'off',
'ProcLimit' => '0',
'FtpLimit' => '10000',
'DatabaseLimit' => '10000',
'Domain' => 'spamd.host-food.ru',
'Ip' => '92.243.74.50',
'Owner' => 'root',
'WebDomainLimit' => '10000',
'CPULimit' => '0',
'MailLimit' => '10000',
'DomainLimit' => '10000'
};
Но можно это все парсить еще проще написать очень большое регулярное выражения ... и получать значение