Help language development. Donate to The Perl Foundation
Trap - Trap $OUT and/or $ERR output
use Trap; my $out; my $err; { # separate capturing $out = Trap(my $*OUT); $err = Trap(my $*ERR); say "Hello world!"; note "Goodbye!" } print "STDOUT: $out.text()"; # SDDOUT: Hello world! print "STDERR: $err.text()"; # STDERR: Goodbye! my $merged; { # merged capturing $merged = Trap(my $*OUT, my $*ERR); say "Hello world!"; note "Goodbye!" } print $merged.text; # Hello world!Goodbye! my $new; { # creating the object manually $new = my $*OUT = Trap.new; say "Hello world!"; } print "with object: $new.text()"; # with object: Hello world! { # ignoring any output Trap(my $*OUT, my $*ERR); say "shall never be seen"; }
Trap exports a class Trap
that can be called to capture standard output and/or standard error, typically for a lexical scope.
The class can be called with either one or two arguments, each of which should be a writeable local dynamic variable $*OUT
or $*OUT
. Or one can create the Trap
object manually. Or one can use Trap
to just trap the standard output and/or standard error (see SYNOPSIS for examples).
Note that if you're only interested in surpressing output from warnings, you should use the quietly
statement prefix.
Elizabeth Mattijsen [email protected]
Source can be located at: https://github.com/lizmat/Trap . Comments and Pull Requests are welcome.
If you like this module, or what I’m doing more generally, committing to a small sponsorship would mean a great deal to me!
Copyright 2022 Elizabeth Mattijsen
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.