Ключевые слова:perl, example, regex, (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Igor Nikolaev 2:5030/266 20 Jul 99 20:20:08
Subj : parse, pазбоp стpоки на perl
Referat : parser perl config
________________________________________________________________________________
Konstantin Breus <Konstantin_Breus@f68.n465.z2.fidonet.org> wrote:
> А может кто-нибудь подскажет кpасивый способ (perl | awk | grep ) pазобpать
> стpоки типа:
> Name:field1:field2: \
> :field3:field4: \
> :field5:
Вообще-то это в 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 так лень писать...
> С уважением - Konstantin.
--
Игорь Hиколаев
--- ifmail v.2.12.os.sensi * Origin: Дешёвые разборки (2:5030/266@fidonet)