We used Perl for this program because of its superior text-handling and regular expression capabilities. PostScript was used due to the wide availability of PostScript output devices.
When process_file() initially creates the meta-list, it creates four empty fields in each sublist for the data which will be inserted later by assign_position(). Inserting these blanks at this point improved our run-time significantly. Previously, we created no empty ``place-holders'' ahead of time, and let assign_position() make more room as required. This, however, involved shoving around large portions of the meta-list to make room for new data. ``Padding'' the meta-list in its initial phases actually improved run-time by over 30 seconds for large input files. This represented approximately 30% of total run-time at that code phase.