🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#51405
Author: ..:: sjf ::..
Date: Thu, 21 May 2009 12:10
13 lines
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
#51406
Author: Vava
Date: Fri, 22 May 2009 18:36
55 lines
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
#51407
Author: Michał Górny
Date: Fri, 22 May 2009 22:03
19 lines
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
#51408
Author: Stachu 'Dozzie' K.
Date: Sat, 23 May 2009 12:52
18 lines
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