Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 redirect STDERR to string   Alexey Lebedeff   09 Aug 2005 19:14:20 
 Re: redirect STDERR to string   Sergey Leschenko   09 Aug 2005 20:01:58 
 Re: redirect STDERR to string   Alexey Lebedeff   10 Aug 2005 19:23:25 
Архивное /ru.perl/13411547dc649.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional