[Linuxtrent] Re: appello agli esperti perl

  • From: Guido Brugnara <gdo@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Fri, 31 Oct 2014 08:15:13 +0100

On 31/10/2014 08:00, Michele Bert wrote:
Il 28 ottobre 2014 09:14, Michele Bert <micbert75@xxxxxxxxx> ha scritto:
Grazie a tutti per gli ottimi suggerimenti, che oggi dovrei trovare il
tempo di applicare.
Rinnovo i ringraziamenti, e vi aggiorno, nel caso le informazioni
tornassero utili a qualcuno.

Ho spezzato il ciclo in due: prima creo tutte le coppie di files, e
successivamente ne sovrascrivo uno per ogni coppia con la conversione
da EBCDIC ad ASCII (in realtà a latin1). La cosa funziona perché la
conversione impiega più tempo della creazione, ma volendo essere
rigorosi avrei bisogno di una tecnica per capire quando il processo
che effettua la creazione, a cui (vi ricordo) passo i comandi
attraverso una pipe) ha finito di creare l'ultimo. Ad esempio cosa
succede all'handle della pipe se il processo all'altro capo termina?
C'è un modo per testarlo?
C'è un modo in perl per rimanere in attesa che una condizione si
verifichi, oppure devo metterci un ciclo di polling? Tipo: while
is_valid($pipeHandle) {sleep 0.1};

Per la conversione ho usato le opzioni di apertura di un file:
     open($infile,"<:encoding(cp37)","$mbr.MBR"); #EBCDIC
     open($ofile ,">:encoding(latin1)","$dest/$mbr.MBR");


Non sarebbe più semplice se:

1) apri il file sorgente (cp37)
2) apri il file di destinazione finale (latin1)
3) finchè ci sono caratteri da leggere a blocchi di 79 (o meno) caratteri
  3.1) scrivo i 79 caratteri + <cr>
4) chiudi i due file

Non capisco il perché di dover usare dei file temporanei che poi devi spostare/copiare.

bye
gdo

--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: