Добрый день! Подскажите пожалуйста по моему вопросу. Суть вот в чем. Имеется программа. Ее код;
#!/usr/bin/perl -w
use strict;
use FindBin;
my $base_dir = "$FindBin::Bin";
my $file_name = "$base_dir/source.dat";
my %interfaces;
my @current_nets;
open(SRC, "< $file_name") || die "Файл не найден!";
while (my $s = <SRC>) {
chomp $s;
next if $s =~ /^\s*$/ || $s =~ /^\s*#/;
# Проверяем, похожа ли строка на ключ=значение
if ($s =~ /^(.+?)\s*=\s*(.+)$/) {
# Да, похожа
ParseKeyValue($1, $2);
next;
}
# Вызов процедуры проверки на начало сети
if ($s =~ /^\[(\S+)\]/) {
ParseNetName($1);
next;
}
}
close SRC;
exit;
# Разобрать строку ключ = значение
sub ParseKeyValue
{
my $key = shift;
my $value = shift;
# $value разобрать на кусочки
my $if;
my $ip;
if ($value =~ /^([a-zA-Z\d]+)(?:\s+(\d+\.\d+\.\d+\.\d+))?/) {
$if = $1;
$ip = $2;
# Вывести на экран для проверки
print "interface = $if";
if ($ip) { print(" ip = $ip"); }
print "\n";
} else {
die "Ошибка разбора на кусочки\n";
}
# Кусочки занести в хеш
$interfaces{$1} = \{if => $1, ip => $2};
}
# Процедура проверки на начало сети
sub ParseNetName
{
my $net = shift;
@current_nets = split(/\|/, $net);
}
Так же имеется файл с данными откуда программа берет необходимые строки и сохраняет их
Содержимое файла source_1.dat.
in = em1
out = p2p1
mslink = em2 192.168.188.12
vpn = p2p2 192.168.195.112
dmz = p2p3 192.168.166.112
mci = p2p4
[in]
201.201.201.0/24 122.190.192.193
162.198.210.0/24 122.60.194.193
[mslink]
192.168.168.130
[dmz]
192.192.192.192/255.255.255.192
192.192.192.192.16
[mci]
172.22.0.0/16 172.22.11.105
[mslink|vpn]
101.200.192.0/16
201.192.180.0/16
192.192.192.0/16
Так вот нужно дописать код так, чтобы создавался новый файл с названием имени сети и туда записывались бы те адреса что идут под именем сети. К примеру создается файл mci его содержимое 172.22.0.0/16 172.22.11.105 и т.д.