Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Open pipe to a function?

by tcf22 (Priest)
on Dec 10, 2003 at 21:41 UTC ( [id://313886]=note: print w/replies, xml ) Need Help??


in reply to Open pipe to a function?

If you are going to pipe it to a script, then I believe it has to be in another script.

If all you need to do is write STDERR to a file, why not just do this at the beginning of your script:
open(STDERR, '>error.txt');
Update:Try using IO::Tee, like suggested by Roy Johnson. I included a sample in my reply to you below.

- Tom

Replies are listed 'Best First'.
Re: Re: Open pipe to a function?
by Sprad (Hermit) on Dec 10, 2003 at 21:44 UTC
    I can't just redirect it, because I also want to see it at runtime.

    ---
    A fair fight is a sign of poor planning.

      You could probably do some tricks with IO::Multiplex. Just save the orginal filehandle like this:

      my $old_stderr = *STDERR;

      And then reopen STDERR with IO::Multiplex with $old_stderr and a filehandle to the log file.

      ----
      I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
      -- Schemer

      : () { :|:& };:

      Note: All code is untested, unless otherwise stated

      How about
      use IO::Tee; open(ERRLOG, '>error.txt'); my $tee = new IO::Tee(\*STDOUT, \*ERRLOG); *STDERR = $tee;

      - Tom

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2024-03-28 14:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found