The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Поиск в файле, !*! l5, 22-Фев-06, 13:25  [смотреть все]
День добрый.

Есть файл test.txt:
<line1>line1 text</line1>
<line2>line2 text</line2>

И есть скрипт:
#!/usr/local/bin/perl

my $file = 'test.txt';
my $text = grep_file($file, '<line1>([^<]+)<');
print "found: '$text'\n";

$text = grep_file($file, '<line2>([^<]+)<');
print "found: '$text'\n";

sub grep_file {
    my $exclusive_lock = 2;
    my $unlock_lock = 8;
    my $file = @_[0];
    my $pattern = @_[1];
    print "pattern = '$pattern'\t---\t";

    open  (FILE, $file) || print "couldn't open $file\n" && return;
    flock (FILE, $exclusive_lock);
    foreach my $line (<FILE>) {
        $line =~ m/^\#/o && next; # ignore comments
        $line =~ m/$pattern/o || next;
        return $1;
    }
    flock (FILE, $unlock_lock);
    close (FILE);
}

Почему-то ищется всегда толко первый паттерн:
% ./tst.pl
pattern = '<line1>([^<]+)<'     ---     found: 'line1 text'
pattern = '<line2>([^<]+)<'     ---     found: 'line1 text'

Подскажите в чем ошибка.
Спасибо.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру