#!/usr/bin/perl open IN, '<&STDIN'; #open IN, 'dump'; { local $/; $content=; } close IN; ($title,$body,$links) = ($content =~ /^(.*)\n\s+_+\n\n (\s+Table\ of\ Contents.*) (References\n\n\s+1\..*)/sx); die unless ($title); print "$title\n".'-' x length($title)."\n\n"; # Sort out local links. # The regex might not be entirely accurate. foreach (split /\n/, $links) { ($index, $url) = /^\s*(\d+)\. (.+)$/; if ($url !~ /file:\/\/.*#.*$/) { $links[$index] = $url; } } $linkno=0; # Split paragraphs foreach (split /\n(?:\s+_+\n)?\n/, $body) { my $footnote = ''; my $rest = $_; while ( $rest =~ /^(.*?)\[(\d+)\](.*)$/s ) { print $1; if (defined $links[$2]) { $linkno++; print "[$linkno]"; $footnote.=" $linkno. $links[$2]\n"; } $rest = $3; } print $rest; print "\n\n"; if ($footnote ne '') { print "$footnote\n"; } }