in reply to IO::Tee and write / format
You need the format_write and format_top_name methods (and maybe others, depending on how sophisticated your form handling needs to be). IO::Tee inherits some format-handling code from IO::Handle. The docs for IO::Tee really only mention it in passing, but it becomes clearer in the docs for IO::Handle, and you need to be sure to tell IO::Tee specifically about things like which format to use for top-of-form (which is "automatic" for STDOUT and the like).
From the shell:
The following code snippet should get you started. Notice that since the name of the format is passed down to IO::Tee, you need to specify the full package name of the format (o/wise you get complaints about undefined formats from IO::Tee).
use strict; use warnings; use IO::Tee; my( $abc, $xyz ) = ( q/hello/, 12345 ); format TEE_TOP = ==== Top of Output ==== . format TEE = @<<<<< @##### $abc, $xyz . # with lexical file handle; can also use bareword handle open my $outfile, '>', 'junk.out' or die "error opening junk.out: ($! +)"; my $tee = IO::Tee->new( \*STDOUT, $outfile ); # see docs for IO::Tee and IO::Handle for explanation of these methods # and others available for proper format use/control $tee->format_top_name( q/main::TEE_TOP/ ); $tee->format_write( q/main::TEE/ );
From the shell:
-> ./tst-tee-write ==== Top of Output ==== hello 12345 -> cat junk.out ==== Top of Output ==== hello 12345
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: IO::Tee and write / format
by beadon (Initiate) on Oct 17, 2008 at 17:28 UTC | |
by broomduster (Priest) on Oct 17, 2008 at 19:36 UTC |
In Section
Seekers of Perl Wisdom