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

Re: Open pipe to a function?

by tcf22 (Priest)
on Dec 10, 2003 at 21:41 UTC ( #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?

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2022-11-27 19:50 GMT
Find Nodes?
    Voting Booth?