#!/usr/bin/env perl use strict; use warnings; my $symbol = undef; my $code = undef; my @descs = (); my $in_item = 0; require "../lib/Errors.pm"; while(<>) { s/[\012\015]*$//; s/\#.*$//; if( /^\s*$/ || /^=back$/ || /^=over 4$/ || /^=cut$/) {} elsif( /^=item (.*)$/ ) { print_symbol($symbol,$code,@descs); $symbol = $1; $code = undef; @descs = (); } elsif (/^=head[12] (.*)$/) { print_symbol($symbol,$code,@descs); $symbol = undef; $code = undef; @descs = (); print "$1\n"; } elsif (/^sub [^ ]+ { (.*) }$/) { $code = $1; $code =~ s/^-//; } elsif (!/^\s*(.*?)\s*$/) { die("unprocessed line: $_") } elsif (defined($symbol)) { push(@descs,$1); } else { my $desc = $1; $desc =~ s/^See also //; print " $desc\n"; } } sub print_symbol { my ($symbol, $code, @descs) = @_; return if (!defined($symbol)); print " $symbol $code\n".join('',map(" $_\n",@descs)) if (defined($symbol)); } print_symbol($symbol,$code,@descs);