|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Leschenko 2:5020/400 09 Aug 2005 20:01:58 To : Alexey Lebedeff Subject : Re: redirect STDERR to string -------------------------------------------------------------------------------- Alexey Lebedeff wrote: > Как перенаправить STDERR в строку. В наличии имеется только Perl 5.6. > > Как сделать в 5.8 - знаю, через "in memory" files. > > В 5.6 пробовал разные фариации на тему IO::String. Типа этого: > *STDERR = new IO::String($err); > или > STDERR->fdopen(new IO::String($err), '>'); > Hикак не хочет работать. > > В гугле осмысленного найти не получилось. > Т.к. мне нужно было в основном перехватить warn-ы, то остановился на > $SIG{__WARN__}, но вот как действительно перехватить в строку всё же > интересно. Hапример Tie::Handle, только добавить хранение строки... == package ErrHandle; use strict; use Tie::Handle; use base 'Tie::Handle'; sub WRITE { my($this, $scalar, $length, $offset) = @_; # TODO -- length + offset print 'STDERR->write: ', $scalar; } sub TIEHANDLE { my $class = shift; bless [], $class; } 1; package main; use strict; tie *STDERR, 'ErrHandle'; print STDERR "Bum!\n"; == -- Best regards, Sergey --- ifmail v.2.15dev5.3 * Origin: Adamant ISP news server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/13411547dc649.html, оценка из 5, голосов 10
|