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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Nevsky                        2:5020/400     23 Dec 2005  00:15:01
 To : All
 Subject : Перенаправление STDOUT и tie
 -------------------------------------------------------------------------------- 
 
 Здравствуйте!
 
 Пытаюсь решить задачу копирования данных, поступающих внутри моей программы в
 STDOUT, в логфайл. Для этого хочу использовать связывание STDOUT с помощью
 tie:
 
 # main.pl
 #!/usr/bin/perl -w
 use strict;
 use Stdout2Log;
 
 tie (*STDOUT, 'Stdout2Log', 'logfile.txt') or die "Can't tie: $!\n";
 print "Test\n";
 # Stdout2Log.pm
 package Stdout2Log;
 
 use strict;
 use Carp;
 
 sub TIEHANDLE {
  my $class = shift;
  my $file = shift;
  open (my $self, '>>', $file) or croak "Can't open log file '$file': $!\n";
  return bless $self, $class;
 }
 
 sub DESTROY {
  my $self = shift;
  $self->CLOSE;
 }
 
 sub CLOSE {
  my $self = shift;
  return close($self);
 }
 
 sub PRINT {
  my $self = shift;
  print $self @_;
  print @_;
 }
 
 1;
 
 Проблема состоит в том, что после такого связывания при вызове метода PRINT
 класса Stdout2Log, по понятным причинам происходит бесконечная рекурсия.
 Подскажите как обойти эту проблему.
 
 - ---
 С уважением, Андрей.
 
 --- ifmail v.2.15dev5.3
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Перенаправление STDOUT и tie   Andrey Nevsky   23 Dec 2005 00:15:01 
 Re: Перенаправление STDOUT и tie   Maxim Yemelyanov   23 Dec 2005 12:25:26 
 Re: Перенаправление STDOUT и tie   Artem Chuprina   23 Dec 2005 12:37:19 
 Перенаправление STDOUT и tie   Andrey Nevsky   23 Dec 2005 19:28:24 
Архивное /ru.perl/16679906cb94a.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional