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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey                               2:5020/400     12 Nov 2003  14:32:45
 To : Andrey Sapozhnikov
 Subject : Re: Копирование выводимого через STDOUT
 -------------------------------------------------------------------------------- 
 
 Andrey Sapozhnikov wrote to Andrey on Tue, 11 Nov 2003 19:05:17 +0000 (UTC):
 
  AS> Andrey wrote:
  ??>> Имеется скрипт, выводящий данные через STDOUT (ActivePerl 5.8.0).
  ??>> Подскажите, пожалуйста, можно ли обеспечить
  ??>> копирование этих данных в файл не прибегая к
  ??>> изменениям в коде всюду, где встречается print?
  ??>> Мои попытки придумать что-либо с использованием
  ??>> синонимов файловых дескрипторов к успеху не привели.
  AS>
  AS> Можно. И даже несколькими способами. Hапример:
  AS>
  AS> open(STDOUT, '| tee logfile');
  AS> или читать , главу Tying FileHandles
 
 Спасибо за ответ.
 Да, подобный вариант решения проблемы я уже находил в
 разделе 7.18 книги "Perl Cookbook". Однако здесь
 предполагается наличие программы tee, которой нет под
 win32. Я пробовал применить предложенную в разделе 8.19
 книги альтернативу программе tee - tctee, попытавшись
 максимально упростив ее под свой частный вырожденный случай:
 
 use strict;
 $| = 1;
 
 open(LOG, ">$ARGV[0]") or die "Can't open file '$ARGV[0]': $!\n";
 select((select(LOG), $| = 1)[0]);
 
 while (<STDIN>) {
  print STDOUT $_;
  print LOG $_;
 }
 
 close(LOG) or die "Can't close file '$ARGV[0]': $!\n";
 close(STDOUT);
 
 exit 0;
 
 Сама по себе эта программа прекрасно справляется со своей задачей,
 копируя данные из STDIN и в STDOUT и в файл. Hо при открытии канала
 к ней в конструкции
 
 open(STDOUT, "| tctee logfile.txt") or die $!;
 
 ошибок не возникает, создается пустой файл logfile.txt и содержимое
 STDOUT никуда не выводится.
 
 Понять причину этого я пока не могу, поэтому буду читать perldoc perltie.
 - ---
 Андрей.
 --- ifmail v.2.15dev5.1
  * Origin: Webplus NEWS server (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Копирование выводимого через STDOUT   Andrey   11 Nov 2003 21:52:59 
 Re: Копирование выводимого через STDOUT   Andrey Sapozhnikov   11 Nov 2003 23:05:17 
 Re: Копирование выводимого через STDOUT   Andrey   12 Nov 2003 14:32:45 
 Копирование выводимого через STDOUT   abrasha shapirus   11 Nov 2003 23:09:50 
 Re: Копирование выводимого через STDOUT   vilfred   12 Nov 2003 02:59:32 
 Re: Копирование выводимого через STDOUT   Slava Ivanov   12 Nov 2003 03:48:43 
Архивное /ru.perl/9252ea510fd2.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional