Newsgroup: it.comp.lang.perl
Titolo: file di una directory

Ciao ,
sto cercando di leggere dei file .csv da una dir. Quanto viene filtrato
dalla funzione grep, lo memorizzo in un array, il quale designa dutti i file
di estensione ".csv" all'interno della directory. Andro poi a modificare
leggermente il nome del file (questo lo so fare, non è un problema).
Quello che mi torna strano è che, eseguendo il debug step by step, con Perl
Builder su Win, le tutte le operazioni vengono eseguite correttamente, ma
quando lancio lo script da riga di comando, l'ecuzione si interrompe senza
aver eseguito alcuna processazione (di almeno 2-4 minuti..)
Perche ?
Grazie
Simon
L'implementazione adottata:
........
opendir(CZ,$INC[3]);
$medii = '_Medie.csv';
@dir = readdir (CZ);
$ext = ''.csv";
foreach $tt(grep(/$ext/,@dir)){
@ttTMP = split (/\./,$tt);
$ttIN = $tt;
$ttOut = $ttTMP[0].$under.$ttTMP[1].$medii;
open (DB,"<$ttIN");
open (DBS,">>$ttOut");
..............
........

 wrote in message
news:VnXl9.161660$ub2.3...@news1.tin.it...

Mi pare di ricordare che perl Builder ti fa un chdir automatico, mentre il
readdir() da linea di comando no. Magari ti sta capitando proprio quello che c'è
scritto nella doc di readdir (perldoc -f readdir):
====== perldoc -f readdir =======
...
If you're planning to filetest the return values out of a
"readdir", you'd better prepend the directory in question.
Otherwise, because we didn't "chdir" there, it would have been
testing the wrong file.
    opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
    @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
    closedir DIR;
===========================
Facci sapere.
ciao
dd

 readdir() da linea di comando no. Magari ti sta capitando proprio quello
che c'č


 Se conoscete un'altra soluzione ?
Cosa vuol dire esattamente "non riesce a processare"?
In ogni caso quello sul quale ho puntato l'attenzione col mio messaggio
precedente è il fatto che in @dir finisce solo una lista di semplici nomi... se
puoi vuoi far qualcosa con tali nomi devi aggiungerci la dir che li contiene. Lo
hai fatto?
ciao
dd

 wrote in message
news:ana0vt$c6vdl$1...@ID-159100.news.dfncis.de...

Ho notato che usi $INC[3]. Sei sicuro di voler usare proprio quella dir? Magari
PerlBuilder ti aggiunge qualcosa in @INC ...
Fatti un favore: usa una dir definita esplicitamente:
$my_dir = '/path/to/my/dir';
opendir (CZ, $my_dir);
...
$ttOut_path_to_file = $my_Dir.'/'.$ttOut;
e poi usa $ttOut_path_to_file  per farci quello che vuoi.
Approposito... sei sicuro che sia un file vero? Dove lo hai verificato? il fatto
che sia scritto con un suffisso non significa necessariamente che sia un file:
queste deduzioni sono quelle che ti faranno poi perdere un casino di tempo
quando fra qualche mese magari deciderai per qualche strano motivo di chiamare
una dir "pippo.csv" e ti sarai bellamente dimenticato che il tuo script non si
accorge che non è un file :-)
ciao
dd

 ha scritto nel messaggio
news:ana1ul$bld3v$1...@ID-159100.news.dfncis.de...


 ha scritto nel messaggio
news:7jdm9.195002$pX1.7...@news2.tin.it...


 lavorando in
@INC contiene le directory in cui il per cerca i moduli o scripts da 
includere, con use o require, il fatto che in $INC[3] c'e' la tua dir 
corrente probabilmente e' un caso, infatti con perl builder funziona e 
con la shell dos no.
Se vuoi lavorare sulla "current working directory" semplicemnte fai
opendir(HANDLER,'.');
-- 
Saluti,
Giancarlo

 cambiarne il nome; come desideravo !!!
Spiegami sto uovo di Colombo, che mi sa che sono uno di quelli che ancora
credono che la terra è piatta!
Ma che necessità hai di fare un file temporaneo? Non basta fare il foreach su
@dir? Cosa permetterebbe di fare in più il file temporaneo che non potresti fare
direttamente sui dati di run time?
ciao
dd