NAME
Trap - Trap $*OUT and/or $*ERR output
SYNOPSIS
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";
}
DESCRIPTION
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.
AUTHOR
Elizabeth Mattijsen liz@raku.rocks
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 AND LICENSE
Copyright 2022, 2024 Elizabeth Mattijsen
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.