Newsgroup: it.comp.lang.perl
Titolo: altro dilemma

CI ho provato ma fino a che non riesco a comprare un libro decente...
come faccio ad avere l'elenco dei file di una dir?
PS... (Questa mi sembra facile facile)
--
Maximiliano Bonfiglio
mailto:
mbon...@flextel.it
FLEXTEL S.p.A.
http://www.flextel.it
Corso Vercelli 328
IVREA 10015 TO Italy
tel 39-125-235319
fax 39-125-252067

 decente... come faccio ad avere l'elenco dei file di una dir?
  Il Perl e` forse l'unico linguaggio con un ambiente di sviluppo
talmente ben documentato da non necessitare ulteriori letture. La
documentazione disponibile con ogni versione e`, a dir poco, esaustiva,
se non addirittura prolissa. L'uso dei libri, naturalmente, aiuta, in
particolare per ottenere una visione d'insieme del linguaggio e per
scoprire una parte dei possibili suoi utilizzi (leggi: trucchi).
  Una buona norma d'utilizzo del Perl potrebbe seguire questo algoritmo:
	1. Avere ben chiaro in mente cosa si vuol fare;
	2. Consultare la lista delle FAQ per vedere se il problema 
	   sia gia` stato affrontato;
	3. Consultare la documentazione operativa alla ricerca 
	   di possibili funzioni, operatori, sintassi o altro in 
	   grado di risolvere il problema;
	4. Effettuare alcune prove;
	5. Rivolgersi ai newsgroup.
  Nel tuo caso:
	1. Ottenere la lista dei file in una directory.
	2. 	$ perldoc -q directory [1]
	3. 	$ perldoc perlfunc
			Perl Functions by Category
			Input and output functions
				binmode, close, closedir, dbmclose, 
				dbmopen, die, eof, fileno, 
				flock, format, getc, print, 
				printf, read, readdir, rewinddir, 
				seek, seekdir, select, syscall, 
				sysread, sysseek, syswrite, 
				tell, telldir, truncate, warn, write
		$ perldoc -f opendir
			=item opendir DIRHANDLE,EXPR
			Opens a directory named EXPR for processing 
			by C<readdir()>, C<telldir()>, 
			C<seekdir()>, C<rewinddir()>, and 
			C<closedir()>.  Returns TRUE if 
			successful.
			DIRHANDLEs have their own namespace 
			separate from FILEHANDLEs.
		$ perldoc -f readdir
			=item readdir DIRHANDLE
			Returns the next directory entry for a 
			directory opened by C<opendir()>.
			If used in list context, returns all the rest 
			of the entries in the directory.  If there 
			are no more entries, returns an undefined 
			value in scalar context or a null list in 
			list context.
			If you're planning to filetest the return 
			values out of a C<readdir()>, you'd 
			better prepend the directory in 
			question.  Otherwise, because we 
			didn't C<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;
	4. Taglia ed incolla l'esempio in uno script Perl e vedi 
	   se funziona come ti aspettavi;
	5. Hai veramente bisogno di postare su news:it.comp.lang.perl?
	Alla prossima,
		Marco
[1] Effettivamente, non e` una domanda posta molto frequentemente; 
    i casi sono due: o a nessuno e` interessata la questione fino ad 
    ora oppure quando si arriva ad avere questa necessita` si e` 
    gia` appreso il metodo di utilizzo operativo del Perl.

Marco Natoni wrote:

Ho provato cosi' ma non funziona:
$some_dir = "/etc";
opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@dots = grep { /^\./ && -f "$some_dir/$_" }
readdir(DIR);
closedir DIR;
Ma non da risultati.
PS. Avevo gia' trovato anche io queste funzioni e le avevo gia' provate, ma poiche' non davano risultati....
PS2. Sono su linux, ma ti scrivo da NT.
Grazie!


 cerchero` un'altra donna dentro ai sogni di Tarzan...

 closedir DIR;
  Prova
	$ ls /etc/.*
e vedi se i risultati non sono gli stessi...
	Alla prossima,
		Marco

Hai messo un a capo di troppo, la penultima riga e`:
Non e' un problema intanto lo script funziona comunque... il perl e' furbo e se
la cava da solo :)
Il problema e' che copiare scripts dalla documentazione _non serve a nulla_ se
non si prova a capire cosa fanno e come lo fanno!!!!
Quelle 6 righe di codice prendono tutti i file che iniziano per . (e per altyro
in /etc non ce ne sono molti!!) e li mette nell'array @dots se lo facciamo
finire non serve a nulla, come minimo potrebbe servire un 
print @dots,"\n";
alla fine.
-- 
Saluti,
Giancarlo

Giancarlo Bisso wrote:

Grazie, lo avevo capito.....
