Well, if it's just for debugging purposes, maybe the direct solution is just to duplicate the print sentence:

use strict; use warnings; my $debug_flag = 0; # not debugging by default $debug_flag = $ARGV[0] if @ARGV == 1; $debug_flag = ( $debug_flag eq lc ( '-debug' ) )? 1 : 0; if ( $debug_flag ) { open DEBUG_FILE, ">debug.out" or die "Cannot open debug file for writing: $!"; } my $output; # do stuff to get the output $output = 'This is a test' . "\n"; print $output; print DEBUG_FILE $output if $debug_flag; # etc...

Not very elegant, true, but print is still the most widely used debugging method, so let's use it...

Another possible, easy way, (if you don't mind losing your stdout output in debug mode) would be to define something like:

# warning, not tested my $out_fh; if ( $debug_flag ) { open FILE, ">debug.out" or die $!; $out_fh = *FILE; } else { $out_fh = *STDOUT; } # and then always do: print $out_fh $output; # it will go to the right place.

The othe solutions are more elegant, but then debugging is always dirty, so...

Good luck,

our $Perl6 is Fantastic;


In reply to Re: Saving Standard Output (overloading print()) by Excalibor
in thread Saving Standard Output (overloading print()) by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.