#!/usr/local/bin/perl use warnings; use strict; my $in_table = 0; my $tr; my $td; my @l = <>; chomp @l; s!(]*//i) { die "nested tables not handled\n" if $in_table++; } # Buggy if and
on same line, but who cares. if (s!]*!!i) { die "mismatched \n" if not $in_table; $in_table = 0; } if (s/]*>//i) { die " outside \n" if not $in_table; die " inside another\n" if $tr; $tr = []; next unless /\S/; } if (s!]*>!!i) { die "mismatched \n" if not $tr; print join '|', '', @$tr, ''; undef $tr; } if (s/]*>//i) { die "\n" if not $tr; die "\n" if not defined $td; push @$tr, $td; undef $td; } } die "$ARGV:EOF inside \n" if $tr; die "$ARGV:EOF inside
outside
inside another\n" if defined $td; $td = ''; } my $end_td = s!]*>!!i; if (defined $td) { s!]*>!!g; s/ / /g; s/^\s+//; s/\s+$//; $td .= ' ' if length $td; $td .= $_; } else { print "$_\n"; } if ($end_td) { die "mismatched \n" if defined $td; die "$ARGV:EOF inside
\n" if $in_table;