Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^2: Redirect Subroutine Output

by spickles (Scribe)
on Aug 26, 2009 at 17:30 UTC ( [id://791401]=note: print w/replies, xml ) Need Help??


in reply to Re: Redirect Subroutine Output
in thread Redirect Subroutine Output

This is why I LOVE this website...so many options! Thanks to everyone that responded. The quickest and most direct route for me is to store to a concatenated string and then print that string to either STDOUT or MYFILE depending on how I call a print function.

Replies are listed 'Best First'.
Re^3: Redirect Subroutine Output
by ikegami (Patriarch) on Aug 26, 2009 at 17:37 UTC

    print that string to either STDOUT or MYFILE depending on how I call a print function.

    print { $to_file ? *MYFILE : *STDOUT } $str;
      ikegami -

      How do I define *MYFILE? I've been doing it using open(MYFILE,'>>out.txt'); But to write to that file, it has to be opened, written to, and then closed. So I'm not sure how to define MYFILE prior to calling the print_to() function. Would it now be a file handle, and pass something like $fh to the subroutine? I don't know what words to use to look up more about your method of passing variables using the ? and :
        Sounds like you want ambrus's 3rd solution
        # Open log file once open(MYFILE, '>>', $qfn) or die("Cannot open file $qfn for appending: $!\n"); ... print_to($to_file ? *MYFILE : *STDOUT, $str);

        Better yet, use a lexical

        open(my $MYFILE, '>>', $qfn) or die("Cannot open file $qfn for appending: $!\n"); ... print_to($to_file ? $MYFILE : *STDOUT, $str);

        Finally, if you want to reopen the file every time you call print_to,

        my $MYFILE; if ($to_file) { open($MYFILE, '>>', $qfn) or die("Cannot open file $qfn for appending: $!\n"); print_to($to_file ? $MYFILE : *STDOUT, $str); } else { $MYFILE = *STDOUT; } print_to($MYFILE, $str);

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://791401]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2025-06-16 03:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.