5 my($code, $short, $explanation);
12 if ( /^\s*<tr>\s*$/i ) {
13 ($code, $short, $explanation) = ('', '', '');
14 } elsif ( /^\s*<td[^>]*>(\d+)(\s| )*<\/td>\s*$/i ) {
16 warn "found code $code" if $DEBUG;
18 } elsif ( /^\s*<td[^>]*>(\d+(\s| )*\-\s*\d+)<\/td>\s*$/i ){
19 warn "skipping range $1" if $DEBUG;
20 until ( ($_=<>) =~ /^\s*<\/tr>\s*$/i ) {
24 } elsif ( /^\s*<td[^>]*>(.*)<\/td>\s*$/i ) {
25 warn "found one line data" if $DEBUG;
26 if ( $mode eq 'short' ) {
28 $short =~ s/<\/?FONT[^>]*>//gi;
29 $short =~ s/ / /g;
30 $short =~ s/<\/?a[^>]*>//gi;
31 $mode = 'explanation';
32 } elsif ( $mode eq 'explanation' ) {
34 $explanation =~ s/<\/?FONT[^>]*>//gi;
35 $explanation =~ s/ / /g;
38 die "found (one-line) data, but in unknown mode $mode";
40 } elsif ( /^\s*<td[^>]*>(.*)$/i ) {
41 warn "found multi-line data (mode $mode)" if $DEBUG;
43 #$data =~ s/<\/?FONT[^>]*>//g;
44 until ( ($_=<>) =~ /^\s*(.*)<\/td>/i ) {
45 /^\s*(.*)\s*$/ or die;
47 warn "found intermediate data $1" if $DEBUG;
49 $_ =~ /^\s*(.*)<\/td>/i;
51 $data =~ s/<\/?FONT[^>]*>//gi;
52 $data =~ s/ / /g;
53 $data =~ s/<\/?[BI]>//gi;
54 $data =~ s/<\/?BR>/ /gi;
55 $data =~ s/<\/?a[^>]*>//gi;
56 warn "last line $1 ($_)" if $DEBUG;
57 warn "coalesced multi-line data: $data" if $DEBUG;
58 if ( $mode eq 'short' ) {
60 $mode = 'explanation';
61 } elsif ( $mode eq 'explanation' ) {
64 } elsif ( $mode eq 'code' && $data =~ /^(\d+)$/ ) {
66 warn "found code $code" if $DEBUG;
69 die "found (multi-line) data, but in unknown mode $mode or don't know what to do with it: $data";
72 } elsif ( /^\s*<\/tr>\s*$/i ) {
73 #$short =~ s/<\/?FONT[^>]*>//g;
74 #$explanation =~ s/<\/?FONT[^>]*>//g;
75 #$short =~ s/[\n\r]//;
76 #$explanation =~ s/[\n\r]//;
79 $explanation =~ s/"/\\"/gi;
81 warn "end of row, printing hash element (code $code)" if $DEBUG;
82 print qq! "$code" => \[ "$short", "$explanation" \],\n!
83 unless $short =~ /^\s*not\s*used\s*/i;