Have you ever had a problem where you kinda knew what was going wrong ... I have that problem. I am using IO::Scalar and when I tie stdout like so:
my $str;
my $io = tie *STDOUT, 'IO::Scalar', \$str;
print_monks();
undef $io;
untie *STDOUT;
# $str now contains the output of the print_monks() function.
Everything works as expected, as long as the print_monks() function is in the same package. When I use a module that exports a function and then try to capture the output of that function in the same code as above, things go haywire. So this doesn't work:
use Some::Module qw(print_blah);
my $str;
my $io = tie *STDOUT, 'IO::Scalar', \$str;
print_blah();
undef $io;
untie *STDOUT;
# print_blah() prints to stdout.
How can I get the output into $str in such a case? Thanks.