Rand Stats

Tee

zef:lizmat

Actions Status Actions Status Actions Status

NAME

Tee - Duplicate $*OUT and/or $*ERR output

SYNOPSIS

use Tee;

my $out = "output.stdout".IO.open(:a);
Tee("output.stdout", my $*OUT);
say "foo";   # foo␤ on STDOUT and "output.stdout" file
note "bar";  # bar␤ on STDERR

DESCRIPTION

The Tee distribution duplicates any output sent to STDOUT and/or STDERR to zero or more files. Files can be specified as either a path (as string or as IO::Path object), or as an IO::Handle object.

If you're more interested in trapping STDOUT and/or STDERR, you should have a look at the Trap distribution.

INSTANTIATION

The Tee class can be called directly with two or three positional arguments. The first positional argument indicates the file(s) which should be written to. If there's only a single file, it can be specified directly. If there are more files, they must be specified as a list.

The second and third argument indicate the source to be used. They must be specified as my $*OUT (for duping STDOUT) and/or my $*ERR (for duping STDERR).

METHODS

method close

my $tee = Tee($out, my $*OUT);
$tee.close;

In some case, it can be necessary to close the files to which output has been duplicated. The close method on the Tee object will do that for you.

AUTHOR

Elizabeth Mattijsen liz@raku.rocks

Source can be located at: https://github.com/lizmat/Tee . 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 2025 Elizabeth Mattijsen

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.