#!usr/bin/perl -w
use strict;
$|=1; #turn autoflush on
sub usage ()
{
print "TEE USAGE:\n".
" program | tee outfile\n".
" sends stdout from program to outfile\n";
exit;
}
my $filename = shift @ARGV;
usage unless $filename;
open (OUTFILE, ">", "$filename")
or (die "Can't open OUTFILE: $!");
while (<>)
{
print;
print OUTFILE;
}
Update: In your program, unbuffer stdout. There is no need for the eval. There can be issues about how to run a perl program on Windows without having to say "perl" explictly - but that's a different subject (and this is possible to do).
#!/usr/bin/perl -w
use strict;
$|=1; #unbuffer stdout
print "File split start time is ", scalar localtime();
prints:
C:\TEMP>perl test.pl | perl tee.pl xxxxx
File split start time is Fri Mar 30 05:57:41 2012
C:\TEMP>type xxxxx
File split start time is Fri Mar 30 05:57:41 2012
C:\TEMP>
|