[Moscow.pm] Перехватить STDERR

Dmitry E. Oboukhov unera на debian.org
Ср Янв 14 06:58:30 PST 2009


есть задача перехватить весь STDERR и выдать его потом
в скажем функции get_stderr

все это дело происходит в бааальшом проекте
в контексте
use utf8; 
use open qw(:std :utf8);

раньше перехват делался примерно так:

0. создаем два пайпа
1. основной процесс форкается
2. один пайп превращаем в STDERR по нему все гонится в дочку
3. по второму пайпу вычитываем из дочки содержимое STDERR.

все работает, но хочется избавиться от форка.

попробовал я заменить STDERR на объект IO::String, работает
в пределах одного теста, но в проекте натыкается на 
use open qw(:std :utf8); и обламывается на том что не может
сделать binmode.

можно ли как-то
1. обойтись без форка
2. обойтись без изъятия директивы use open qw(:std :utf8);?
--
... mpd playing: U.D.O. - Heart Of Gold

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera на debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20090114/4cd202b9/attachment.bin>


Подробная информация о списке рассылки Moscow-pm