in reply to Saving STDERR and displaying it later

CPAN is your friend: IO::Capture::Stderr

(and if you don't want to use something labeled version 0.05, you can always take a look at how they're doing it)

  • Comment on Re: Saving STDERR and displaying it later

Replies are listed 'Best First'.
Re^2: Saving STDERR and displaying it later
by UnwashedCat (Acolyte) on Jul 03, 2006 at 18:19 UTC
    Hey, this is exactly what I wanted! I'll have to remember to search CPAN more thoroughly next time. Thanks!
      If you dont want to introduce a dependency on IO::Capture::Stderr, and you only want to capture the STDERR from the die() calls, you could try this

      my @dieings; sub my_die() { # localise capture to just my_die() calls... local $SIG{__DIE__} = sub { push(@dieings, @_); }; die(@_); } #... time passes my_die("now we need to capture"); #... time passes print "now we need to report " . Dumper(\@dieings);

      It may be possible to replace die() with this at compile time, I've never tried the *CORE::GLOBAL trick with die(), only open(). I know there are some perl functions where not even compile-time replacement works, die() might be one of those.

      ...reality must take precedence over public relations, for nature cannot be fooled. - R P Feynmann