Вообще-то это в ru.perl, но если не напрягаться и не пытаться
экономить на коде, то:
#!/usr/bin/perl -w
# подпрограмма чтения порезанных строк
sub get_conf {
return if ( not defined ( $_ = <> ) ); # уйти если файл кончился
chop; # отрезаем 'n'
s/t/ /go; # заменить все табуляции на пробелы
s/ *$//o; # удалить все пробелы в конце строки
if ( /\$/ ) { # если строка кончается на ''
s/ *\//o; # удалить все пробелы до '' и саму ''
my $s = $_; # запомнить в $s
&get_conf; # рекурсия - берём след строку
s/^ *://o; # удаляем в ней все пробелы и ':' от начала
$_ = $s.$_; # объединяем в одну строку
}
}
# основная программа :-)
while ( &get_conf ) { print $_, "n"; }
Hа самом деде это всё делается в три (одну :) строки как:
$_ = join ( '', <> );
регулярное_выражение;
@_ = split ( /n/, $_ );
Hо этот regexp так лень писать...