---
name: "SGMLS::Output"
section: "3pm"
platform: "linux"
package: "perl-sgmls"
version: "1:1.1-14"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SGMLS::Output"
---

# SGMLS::Output(3pm)

Stack-based Output Procedures

## NAME

SGMLS::Output - Stack-based Output Procedures

## SYNOPSIS

```
  use SGMLS::Output;
```

To print a string to the current output destination:

```
  output($data);
```

To push a new output level to the filehandle DATA:

```
  push_output('handle',DATA);
```

To push a new output level to the file "foo.data" (which will be opened and closed automatically):

```
  push_output('file','foo.data');
```

To push a new output level to a pipe to the shell command "sort":

```
  push_output('pipe','sort');
```

To push a new output level *appending* to the file "foo.data":

```
  push_output('append','foo.data');
```

To push a new output level to an empty string:

```
  push_output('string');
```

To push a new output level appending to the string "David is ":

```
  push_output('string',"David is ");
```

To push a new output level to The Great Beyond:

```
  push_output('nul');
```

To revert to the previous output level:

```
  pop_output();
```

To revert to the previous output level, returning the contents of an output string:

```
  $data = pop_output();
```

## DESCRIPTION

This library allows redirectable, stack-based output to files, pipes, handles, strings, or nul.  It is especially useful for packages like SGMLS, since handlers for individual **SGML** elements can temporarily change and restore the default output destination.  It is also particularly useful for capturing the contents of an element (and its sub-elements) in a string.

Example:

```
  sgmls('<title>', sub{ push_output('string'); });
  sgmls('</title>', sub{ $title = pop_output(); });
```

In between, anything sent to **output** (such as CDATA) will be accumulated in the string returned from **pop\_output()**.

Example:

```
  sgmls('<tei.header>', sub { push_output('nul'); });
  sgmls('</tei.header>', sub { pop_output(); });
```

All output will be ignored until the header has finished.

## AUTHOR AND COPYRIGHT

Copyright 1994 and 1995 by David Megginson, `"dmeggins@aix1.uottawa.ca"`.  Distributed under the terms of the Gnu General Public License (version 2, 1991) -- see the file `"COPYING"` which is included in the **SGMLS.pm** distribution.

## SEE ALSO:

SGMLS.
