Links: Next Previous Up Top

How do I use

First, you need to copy the file to a directory where perl can find it (on a Unix system, it might be /usr/lib/perl5 or /usr/local/lib/perl5, or whatever the environment variable PERL5LIB is set to) and make certain that it is world-readable.

Next, near the top of your perl5 program, type the following line:

use SGMLS;

You must then open up a file handle from which can read the data from an sgmls or nsgmls process, unless you are reading from a standard handle like STDIN -- for example, if you are piping the output from sgmls to a perl5 script, using something like

sgmls foo.sgml | perl

then the predefined filehandle STDIN will be sufficient. In DOS, you might want to dump the sgmls output to a file and use it as standard input (or open it explicitly in perl), and in Unix, you might actually want to open a pipe or socket for the input. doesn't need to seek, so any input stream should work.

To parse the sgmls or nsgmls output from the handle, create a new object instance of the SGMLS class with the handle as an argument, i.e.

$parse = new SGMLS(STDIN);

(You may create more than one SGMLS object at once, but each object must have a unique handle pointing to a unique stream, or chaos will result.) Now, you can retrieve and process events using the next_event method:

while ($event = $parse->next_event) {
    #do something with each event

Links: Next Previous Up Top

David Megginson <>