# feed this into perl eval 'exec perl -S $0 ${1+"$@"}' if $running_under_some_shell; # Usage: rofftoc PerlTOC.xxx.raw # # Post-processes roffitall output. Called from roffitall to produce # a formatted table of contents. # # Author: Tom Christiansen print <<'EOF'; .de NP '.sp 0.8i .tl ''- % -'' 'bp 'sp 0.5i .tl ''\fB\s+2Perl Table of Contents\s0\fR'' 'sp 0.3i .. .wh -1i NP .af % i .sp 0.5i .tl ''\fB\s+5Perl Table of Contents\s0\fR'' .sp 0.5i .nf .na EOF while (<>) { #chomp; s/Index://; ($type, $page, $desc) = split ' ', $_, 3; $desc =~ s/^"(.*)"$/$1/; if ($type eq 'Title') { ($name = $desc) =~ s/ .*//; next; } elsif ($type eq 'Name') { #print STDERR $page, "\t", $desc; print ".ne 5\n"; print ".in 0\n"; print ".sp\n"; print ".ft B\n"; print "$desc\n"; print ".ft P\n"; print ".in 5n\n"; } elsif ($type eq 'Header') { print ".br\n", $page, "\t", $desc; } elsif ($type eq 'Subsection') { print ".br\n", $page, "\t\t", $desc; } elsif ($type eq 'Item') { next if $desc =~ /\\bu/; next unless $name =~ /POSIX|func/i; print ".br\n", $page, "\t\t\t", $desc; } } __END__ Index:Title 1 "PERL 1" Index:Name 1 "perl - Practical Extraction and Report Language" Index:Header 1 "NAME" Index:Header 1 "SYNOPSIS" Index:Header 2 "DESCRIPTION" Index:Item 2 "\(bu Many usability enhancements" Index:Item 2 "\(bu Simplified grammar" Index:Item 2 "\(bu Lexical scoping" Index:Item 2 "\(bu Arbitrarily nested data structures" Index:Item 2 "\(bu Modularity and reusability"