У меня есть текст, и я пишу для него парсер, используя регулярные выражения и 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 для продолжения работы со строками или как?
BR,
Юлия