У меня есть текст, и я пишу для него парсер, используя регулярные выражения и perl.
Я могу сопоставить то, что мне нужно, с двумя пустыми строками (я использую регулярное выражение), потому что есть шаблон, который позволяет распознавать блоки текста после двух пустых строк.
Но проблема в том, что во всем тексте есть вводная часть, а какой-то текст в конце мне не нужен.
Вот код, который соответствует тексту, когда находит две пустые строки
#!/usr/bin/perl
use strict;
use warnings;
my $file = 'first';
open(my $fh, '<', $file);
my $empty = 0;
my $block_num = 1;
open(OUT, '>', $block_num . '.txt');
while (my $line = <$fh>) {
chomp ($line);
if ($line =~ /^\s*$/) {
$empty++;
} elsif ($empty == 2) {
close(OUT);
open(OUT, '>', ++$block_num . '.txt');
$empty = 0;
}
else {
$empty = 0;}
print OUT "$line\n";
}
close(OUT);
Это пример текста, который мне нужен (он действительно маленький :))
Я думаю, что мне нужно перебрать текст до того момента, пока он не найдет слово LOREM IPSUM с регулярными выражениями типа "/^LOREM IPSUM/", потому что это точка, с которой начинается нужный текст (и сохранить текст в одном файле когда я доберусь до слова). И мне нужно закончить итерацию по тексту, когда слово INDEX найдено, или сохранить текст в отдельном файле.
Как я мог это реализовать. Должен ли я использовать функцию next для перехода к строкам или как?
БР, Юлия