#!/usr/bin/perl
### ПЕРЕМЕННЫЕ
$log="log.log";
$out="out.dat";
$err="err.dat";
###
#system ("rm $out $log $err");
### Сохраняем стандартный вывод и вывод ошибок
open(SAVEOUT, ">&STDOUT");
open(SAVEERR, ">&STDERR");
### Открываем файл для записи
open (LOG,"> $log") or die "do not open $log!!!\n";
### Процедура вывода в файл
sub prn2f {
$param =$_[0];
select (LOG); $|=1;
print $param;
}
### Процедура вывода в изначальный STDOUT
sub prn2std {
$param =$_[0];
select (SAVEOUT); $|=1;
print $param;
select (LOG); $|=1;
}
### Процедура вывода в изначальный STDERR
sub prn2err {
$param =$_[0];
select (STDERR); $|=1;
print $param;
select (LOG); $|=1;
}### Перенаправляем STDOUT и STDERR в файлы
sub std2file {
open (STDOUT, "> $out") or die "do not forward STDOUT to $out...\n";
open (STDERR, "> $err") or die "do not forward STDERR to $err....\n";
select(STDERR); $| = 1; # отключаем буферизацию
select(STDOUT); $| = 1; # отключаем буферизацию
}
### Восстанавливаем вывод
sub std2std {
open(STDOUT, ">&SAVEOUT");
open(STDERR, ">&SAVEERR");
}
### НАЧАЛО ПРИМЕРА
prn2std ("Вывод в стандартную консоль\n");
prn2f ("Вывод в файл\n");
prn2err("Вывод в поток ошибок\n");
std2file();
prn2std ("Вывод в стандартную консоль\n");
prn2f ("Вывод в файл\n");
prn2err("Вывод в поток ошибок\n");
std2std();
### КОНЕЦ
__END__
Комментариев нет:
Отправить комментарий