|
|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16679906cb94a.html, оценка из 5, голосов 10
|