From kanak at perl.it Sun Jul 3 09:45:50 2005 From: kanak at perl.it (kanak@perl.it) Date: Sun, 3 Jul 2005 18:45:50 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <42BFE587.1030509@perl.it> References: <20050626144549.27213.qmail@web26907.mail.ukl.yahoo.com> <1666677167.20050627133008@perl.it> <42BFE587.1030509@perl.it> Message-ID: <1588538622.20050703184550@perl.it> ho fatto uno script che legge dei testi e crea delle parole. vorrei che il programma printasse delle frasi mentre e' in lavorazione (perche' sui grossi testi come la bibbia o la commedia ci mette minuti) a esempio: -> leggo testo -> pulisco testo -> studio parole -> conto lettere invece lui fa prima tutto il lavoro (e io aspetto) e solo dopo printa tutto. ovviamente la linea: | print "\n-> leggo testo"; io l'ho inserita prima di | open IN, "<$ARGV[0]"; | $testo .= until eof IN; | close IN; ma lui prima lavora e poi scrive. qualcuno sa perche' e come impedirglielo? io sapevo che il perl legge lo script completamente prima di eseguirlo (infatti mettiamo le sub in fondo impunemente) ma pensavo che poi seguisse l'ordine dei comandi... From ema_zep at libero.it Sun Jul 3 20:05:11 2005 From: ema_zep at libero.it (Emanuele Zeppieri) Date: Mon, 4 Jul 2005 05:05:11 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <1588538622.20050703184550@perl.it> Message-ID: <003601c58045$31264ea0$1400000a@main> > -----Original Message----- > From: roma-bounces at pm.org [mailto:roma-bounces at pm.org] On > Behalf Of kanak at perl.it > Sent: Sunday, July 03, 2005 6:46 PM > To: Aldo Calpini > Subject: [Roma.pm] domanda tecnica > > > ho fatto uno script che legge dei testi e crea delle parole. > > vorrei che il programma printasse delle frasi mentre e' in lavorazione > (perche' sui grossi testi come la bibbia o la commedia ci > mette minuti) > [...] Metti le seguente assegnazione: $| = 1; all'inizio del tuo codice. Ciao, Emanuele. From kanak at perl.it Sun Jul 3 22:56:41 2005 From: kanak at perl.it (kanak@perl.it) Date: Mon, 4 Jul 2005 07:56:41 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <003601c58045$31264ea0$1400000a@main> References: <1588538622.20050703184550@perl.it> <003601c58045$31264ea0$1400000a@main> Message-ID: <1339597531.20050704075641@perl.it> > Metti le seguente assegnazione: > $| = 1; > all'inizio del tuo codice. grazie emanuele.. funziona! cosa vuol dire quel comando? From ema_zep at libero.it Sun Jul 3 23:49:37 2005 From: ema_zep at libero.it (Emanuele Zeppieri) Date: Mon, 4 Jul 2005 08:49:37 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <1339597531.20050704075641@perl.it> Message-ID: <02e401c58064$8bff0c80$1400000a@main> > -----Original Message----- > From: roma-bounces at pm.org [mailto:roma-bounces at pm.org] On > Behalf Of kanak at perl.it > Sent: Monday, July 04, 2005 7:57 AM > To: Emanuele Zeppieri > Subject: Re: [Roma.pm] domanda tecnica > > > > Metti le seguente assegnazione: > > $| = 1; > > all'inizio del tuo codice. > > grazie emanuele.. Di niente! ;-) > funziona! > > cosa vuol dire quel comando? Settando la variabile predefinita $| ad un valore "true" (cio? diverso da zero), attivi il cosiddetto "autoflush", che ? lo svuotamento forzato del buffer di output immediatamente dopo ogni operazione di scrittura, assicurandoti cos? che i dati in output vengano inviati immediatamente al dispositivo (terminale, pipe etc.). In caso contrario incorreresti nella gestione degli eventuali buffer del canale di output da parte del SO che, se da una parte permette migliori prestazioni globali del sistema, pu? portare a ritardi nell'effettiva esecuzione delle operazioni di scrittura. Ciao, Emanuele. From kanak at perl.it Mon Jul 4 00:01:54 2005 From: kanak at perl.it (kanak@perl.it) Date: Mon, 4 Jul 2005 09:01:54 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <02e401c58064$8bff0c80$1400000a@main> References: <1339597531.20050704075641@perl.it> <02e401c58064$8bff0c80$1400000a@main> Message-ID: <1601454033.20050704090154@perl.it> >> > $| = 1; grazie di nuovo, per ottimizzare le prestazioni mantenendo l'output al punto giusto posso, quindi, variare il valore di $| tra 1 e 0 (o tra 1 e undef) durante lo script..? From ema_zep at libero.it Mon Jul 4 00:33:16 2005 From: ema_zep at libero.it (Emanuele Zeppieri) Date: Mon, 4 Jul 2005 09:33:16 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <1601454033.20050704090154@perl.it> Message-ID: <02e601c5806a$a5399430$1400000a@main> > -----Original Message----- > From: roma-bounces at pm.org [mailto:roma-bounces at pm.org] On > Behalf Of kanak at perl.it > Sent: Monday, July 04, 2005 9:02 AM > To: Emanuele Zeppieri > Subject: Re: [Roma.pm] domanda tecnica > > > >> > $| = 1; > > grazie di nuovo, per ottimizzare le prestazioni mantenendo l'output > al punto giusto posso, quindi, variare il valore di $| tra 1 e 0 > (o tra 1 e undef) durante lo script..? Puoi farlo, ma non otterresti alcun beneficio, perch? i vantaggi prestazionali derivano esclusivamente dal fatto che l'output viene bufferrizzato, e "scritto" effettivamente soltanto quando il buffer ? pieno e quando il sistema non ? impegnato a fare altro. Per le istruzioni che non generano alcun output, la disattivazione dell'autoflush ? del tutto irrilevante. In altre parole: output ritardato = qualche piccolo vantaggio prestazionale. Output immediato = qualche piccola penalit? prestazionale. Nessun output = nessuna rilevanza dell'autoflush. Detto questo, anche i vantaggi prestazionali sono in genere davvero trascurabili (li ho menzionati solo per chiarire il concetto, non per la loro effettiva rilevanza). Ciao, Emanuele. From kanak at perl.it Mon Jul 4 00:41:52 2005 From: kanak at perl.it (kanak@perl.it) Date: Mon, 4 Jul 2005 09:41:52 +0200 Subject: [Roma.pm] domanda tecnica In-Reply-To: <02e601c5806a$a5399430$1400000a@main> References: <1601454033.20050704090154@perl.it> <02e601c5806a$a5399430$1400000a@main> Message-ID: <1769531333.20050704094152@perl.it> perfetto grazie