package loadtable; %table=(); $maxrow=-1; $maxcol=-1; sub load { local($select)=(@_); local($a,$b,$c,$table_id,$i,$j,$element); %table=(); $maxrow=-1; $maxcol=-1; LOOP: while(<>) { if(/^TB/) { ($a,$table_id)=split; if($table_id ne $select) { $table_id=""; } $i=-1;$j=-1; next LOOP; } if(!$table_id) { next LOOP; } if(/^TE/) { ($a,$b)=split; if($b ne $table_id) { die "broken data: table ID = $table_id\n"; } $table_id=""; next LOOP; } if(/^EB/) { ($a,$i,$j)=split; $element=""; $maxrow=$i if $i > $maxrow; $maxcol=$j if $j > $maxcol; next LOOP; } if(/^EE/) { ($a,$b,$c)=split; if($b!=$i || $c!=$j) { die "broken data: row=$i col=$j\n"; } $table{"$i $j"}=$element; $i=-1; $j=-1; next LOOP; } if(/^X/) { if($i<0 || $j<0) { die "broken data: $_"; } $element.=substr($_,1); next LOOP; } } } 1;