День добрый.
Есть файл 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'
Подскажите в чем ошибка.
Спасибо.