From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more
— |
#!/usr/bin/perl -w
no locale;
my %items ;
my $item_key ;
$/ = '' ;
while (<>) {
if (/^=item\s+(.+)/) {
$item_key = get_item_key($1);
$items { $item_key } .= $_ ;
} elsif (/^=back\b/) {
foreach my $item_key ( sort keys %items ) {
print $items { $item_key };
}
$item_key = undef ;
%items = ();
print ;
} elsif ( defined $item_key ) {
$items { $item_key } .= $_ ;
} else {
print ;
}
}
if ( keys %items ) {
warn "Missing =back after final =item.\n" ;
foreach my $item_key ( sort keys %items ) {
print $items { $item_key };
}
}
sub get_item_key {
my ( $item ) = @_ ;
$item =~ s/[A-Z]<(.*?)>/$1/g;
$item =~ s/%(?:[scg]|lx|
$item =~ tr /A-Za-z//cd;
return lc $item ;
}
|