|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 23 Dec 2005 12:37:19 To : Andrey Nevsky Subject : Re: Перенаправление STDOUT и tie -------------------------------------------------------------------------------- Andrey Nevsky -> All @ Thu, 22 Dec 2005 20:15:01 +0000 (UTC): AN> Здравствуйте! AN> Пытаюсь решить задачу копирования данных, поступающих внутри моей программы AN> в STDOUT, в логфайл. Для этого хочу использовать связывание STDOUT с AN> помощью tie: AN> # main.pl AN> #!/usr/bin/perl -w AN> use strict; AN> use Stdout2Log; AN> tie (*STDOUT, 'Stdout2Log', 'logfile.txt') or die "Can't tie: $!\n"; AN> print "Test\n"; AN> # Stdout2Log.pm AN> package Stdout2Log; AN> use strict; AN> use Carp; AN> sub TIEHANDLE { AN> my $class = shift; AN> my $file = shift; AN> open (my $self, '>>', $file) or croak "Can't open log file '$file': $!\n"; AN> return bless $self, $class; AN> } AN> sub DESTROY { AN> my $self = shift; AN> $self->CLOSE; AN> } AN> sub CLOSE { AN> my $self = shift; AN> return close($self); AN> } AN> sub PRINT { AN> my $self = shift; AN> print $self @_; AN> print @_; AN> } AN> 1; AN> Проблема состоит в том, что после такого связывания при вызове метода PRINT AN> класса Stdout2Log, по понятным причинам происходит бесконечная рекурсия. AN> Подскажите как обойти эту проблему. Объект должен содержать два файлхендла. Второй делается посредством вызова IO::Handle->new_from_fd(fileno(STDOUT), "w"). -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru Если ты не боишься синего экрана, то почему боишься черного? (c) Д.Белявский --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11477e915a5f3.html, оценка из 5, голосов 10
|