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 fileNon 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