Можно так:
#!/usr/bin/perl
my $text= qq~
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
~;
my %content;
my $tag;
while($text=~/(<(\\w+)>([\\w\\W]+)<\\/\\w+>)/){
$content{$2} .=$3;# .= на случай повторения
$tag=$1;
$text=~s/$tag//;
}
foreach my $key (keys %content){
print "$key:\\n $content{$key}";
}
А можно так (вариант2, на мой взгляд хуже первого):
#!/usr/bin/perl
my $text= qq~
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
bla-bla-bla
~;
my @content=split(/<\\/[\\w\\d]+>/, $text);
my %content;
my $tag;
foreach my $elm(@content){
if ($elm=~/<([\\w\\d]+)>([\\w\\W]+)/){$content{$1}=$2;}
}
foreach my $key (keys %content){
print "$key:\\n $content{$key}\\n\\n";
}
Если хочешь как то иначе
скажи. Вообще, мне такой тип шаблона заинтересовал.