Thread View: pl.comp.lang.perl
4 messages
4 total messages
Started by ..:: sjf ::..
Thu, 21 May 2009 12:10
Wyłączyć buforowanie wyjścia bez praw zapisu skryptu
Author: ..:: sjf ::..
Date: Thu, 21 May 2009 12:10
Date: Thu, 21 May 2009 12:10
13 lines
1448 bytes
1448 bytes
Witam, Mam taki problem: w skrypcie A uruchamiam inny skrypt (B), którego wyniki przetwarzam. W skrypcie B _nie_jest_wyłączone_ buforowanie (brak $|++). W efekcie wyniki pracy mojego skryptu (A) wypisywane są na wyjście z opóźnieniem, a w większości przypadków nawet po przetworzeniu całości. Do skryptu B nie mam praw zapisu, więc go nie zmienię. Czy istnieje jakiś sposób wyłączenia buforowania? -- Szczepan J. Fijał :: sjf @ 50°07'N 18°58'E xmpp:sjf@jabster.pl | tlen:sjf | gg:2604451 | skype:s.fijal?call "2 nie jest równe 3 - nawet dla dużych wartości 2."
Re: Wyłączyć buforowanie wyjścia bez praw zapisu skryptu
Author: Vava
Date: Fri, 22 May 2009 18:36
Date: Fri, 22 May 2009 18:36
55 lines
2251 bytes
2251 bytes
Dnia 21-05-2009 o 14:10:29 ..:: sjf ::.. <somebody@unknown.org.invalid>
napisał(a):
> Mam taki problem: w skrypcie A uruchamiam inny skrypt (B), którego
> wyniki przetwarzam. W skrypcie B _nie_jest_wyłączone_ buforowanie (brak
> $|++). W efekcie wyniki pracy mojego skryptu (A) wypisywane są na
> wyjście z opóźnieniem, a w większości przypadków nawet po przetworzeniu
> całości. Do skryptu B nie mam praw zapisu, więc go nie zmienię.
> Czy istnieje jakiś sposób wyłączenia buforowania?
Jesteś pewien że tego potrzebujesz? Moim zdaniem, to lepiej przemyśl,
czego potrzebujesz...
Ale jak chcesz to można to na wiele sposobów zrobić, ale to raczej zależy,
co chesz z wyjściem B zrobić i co on ma w środku.
Najprościej utworzyć nowy plik z prawem do zapisu, do niego przekopiowaź
plik B i zmodyfkoać ;-)
Jk z jakichś przyczyn nie mozesz, to chyba najprostsze rozwiązanie:
flush.pm:
#!/usr/bin/perl
package flush;
$|++;
1;
__END__
a.pl:
#!/usr/bin/perl
system ("perl -Mflush b.pl");
__END__
b.pl:
#!/usr/bin/perl
for (1..100) { print '.'; sleep 1 }
__END__
Ale jak B ma explicite wyłączenie autoflusha, to nie zadziała... Wtedy
możesz zmodyfikować moduł flush, by działał jako filtr kodu źródłowego
(see perldoc perlfilter).
Albo sto innych spospbów ;-)
Pozdrawiam
--
Vava
Wawrzyniec Żurowski
Victoria vale, et ubique es, suaviter sternutas
Re: Wyłączyć buforowanie wyjścia bez praw zapisu skryptu
Author: Michał Górny
Date: Fri, 22 May 2009 22:03
Date: Fri, 22 May 2009 22:03
19 lines
1596 bytes
1596 bytes
On Thu, 21 May 2009 14:10:29 +0200, ..:: sjf ::.. <somebody@unknown.org.invalid> wrote: > Mam taki problem: w skrypcie A uruchamiam inny skrypt (B), którego > wyniki przetwarzam. W skrypcie B _nie_jest_wyłączone_ buforowanie (brak > $|++). W efekcie wyniki pracy mojego skryptu (A) wypisywane są na > wyjście z opóźnieniem, a w większości przypadków nawet po przetworzeniu > całości. Do skryptu B nie mam praw zapisu, więc go nie zmienię. > Czy istnieje jakiś sposób wyłączenia buforowania? ( echo '$|++;'; cat a.pl ) | perl Tylko, że to troszkę brzydkie w sumie. -- Z poważaniem, Michał Górny http://mgorny.alt.pl/ <xmpp:mgorny@jabber.ru>
Re: Wyłączyć buforowanie wyjścia bez praw zapisu skryptu
Author: Stachu 'Dozzie' K.
Date: Sat, 23 May 2009 12:52
Date: Sat, 23 May 2009 12:52
18 lines
1634 bytes
1634 bytes
On 22.05.2009, Michał Górny wrote: > On Thu, 21 May 2009 14:10:29 +0200, ..:: sjf ::.. <somebody@unknown.org.invalid> wrote: > >> Mam taki problem: w skrypcie A uruchamiam inny skrypt (B), którego >> wyniki przetwarzam. W skrypcie B _nie_jest_wyłączone_ buforowanie (brak >> $|++). W efekcie wyniki pracy mojego skryptu (A) wypisywane są na >> wyjście z opóźnieniem, a w większości przypadków nawet po przetworzeniu >> całości. Do skryptu B nie mam praw zapisu, więc go nie zmienię. >> Czy istnieje jakiś sposób wyłączenia buforowania? > > ( echo '$|++;'; cat a.pl ) | perl > > Tylko, że to troszkę brzydkie w sumie. Że niby perl -e '$| = 1; do "a.pl"' będzie ładniejsze? -- Stanislaw Klekot
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads