1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#!/usr/bin/perl
$_ = <>; s/\s+$//;
while (1)
{
if (/^\[(.*)\]$/)
{
unless ($juzbyl = exists $juzbyl{$1})
{
push @znaki, "$_\n";
$juzbyl{$1} = 1;
}
}
elsif (/^$/)
{
if (@znaki || $juzbyl)
{
if ($znak ne "")
{
push @{$font{$znak}}, @znaki;
}
else
{
push @font, {NAGLOWKI => [@znaki], ZNAK => ""};
}
@znaki = ();
$znak = "";
$juzbyl = 0;
}
}
else
{
(@znaki ? /^[.0]+$/ ? $znak : $znaki[-1] : $font) .= "$_\n"
unless $juzbyl;
}
last unless defined;
$_ = <>; s/\s+$//;
}
print "$font\n";
push @font, map {{NAGLOWKI => $font{$_}, ZNAK => $_}} keys %font;
foreach (sort {${$a}{NAGLOWKI}[0] cmp ${$b}{NAGLOWKI}[0]} @font)
{
print @{${$_}{NAGLOWKI}}, ${$_}{ZNAK}, "\n";
}
|