Если я понимаю ваши данные, пустые строки не являются надежным индикатором, поскольку они могут появляться до того, как начинается текст ключевого слова, после текста или вообще не показываться.Если это так, я не думаю, что это поможет прочитать текст в «режиме абзаца» (установив $/
в пустую строку).Точно так же, пустые строки не помогают - по крайней мере, не простым способом - определить начало и конец разделов ключевых слов или «блоков».
Вам придется проанализировать текстболее детально, но вы не дали нам достаточно информации, чтобы дать подробный ответ.Вот пример, который просто хранит непустые строки по ключевому слову:
use strict;
use warnings;
my (%data, $keyword);
while (my $line = <DATA>){
next unless $line =~ /\S/;
chomp $line;
if ($line =~ /^Keyword/){
$keyword = $line;
}
else {
push @{$data{$keyword}}, $line;
}
}
__DATA__
Keyword1
data1 a
Keyword2
data2 a
data2 b
data2 c
Keyword3
data3 a
data3 b
Keyword4
data4 a
data4 b