my $writer = IO::Pipe->new(); $writer->writer(); print $writer $some_function(); $writer->flush(); $writer->close;
Что произойдет, если some_function выдаст какое-то исключение или STDERR? Это записано в $writer? Если нет, то как этого добиться?
some_function
$writer
Вам нужно поймать $SIG{__WARN__} и / или $SIG{__DIE__}
$SIG{__WARN__}
$SIG{__DIE__}
{ my $writer = IO::Pipe->new(); $writer->writer(); local $SIG{__WARN__} = sub { print $writer $_[0] }; local $SIG{__DIE__} = sub { print $writer $_[0] }; print $writer $some_function(); $writer->flush(); $writer->close; }
$SIG{__DIE__} нуждается в модификации в зависимости от того, как вы хотите обрабатывать критические ошибки.
https://perldoc.perl.org/perlvar.html#%25SIG