Newsgroup: it.comp.lang.perl
Titolo: perche non funzionano queste tre linee di codice?

use Tk;
use Tk::FileSelect;
$top=MainWindow->new;
$start_dir='C:\';
 $FSref = $top->FileSelect(-directory => $start_dir);
               #$top            - a window reference, e.g. MainWindow->new
               #$start_dir      - the starting point for the FileSelect
 $file = $FSref->Show;
       # Executes the fileselector until either a filename is
               #accepted or the user hits Cancel. Returns the filename
               #or the empty string, respectively, and unmaps the
               #FileSelect.
 #$FSref->configure(option => value[, ...])
   #            Please see the Populate subroutine as the configuration
     #          list changes rapidly.
Il problema è che non riesco a far partire il browser dei file da c:\, come
specifico in $start_dir='C:\';
Come posso fargli a dire di partire da C:\?

 [snip]
Devi scrivere:
$start_dir = 'C:\\';
HTH


Nemmeno cosi funziona, prova a lanciare il programma ed andare nella
direcotry c:, il programma si blocca
oppure prova a lanciare il programma direttamente da c, il programma si
blocca
come si puo risolvere il problema?


Pensavo avessi fermato il listing alla riga che da errore.
Il programma funzione se aggiungi almeno 2 istruzioni:
chadir($start_dir); e
MainLoop;
come nel listato che segue.
HTH
use Tk;
use Tk::FileSelect;
$top=MainWindow->new;
$start_dir='C:\\';
chdir($start_dir); # senza questa istruzione il programma assume
                             # che il punto di partenza sia la directory
corrente
 $FSref = $top->FileSelect(-directory => $start_dir);
               #$top            - a window reference, e.g.
MainWindow->new
               #$start_dir      - the starting point for the FileSelect
 $file = $FSref->Show;
MainLoop;    # necessario per avviare l'esecuzione

 ha scritto nel messaggio
news:9jc5p9$ijf$1...@pegasus.tiscalinet.it...


 ha scritto nel messaggio
news:qEx67.10869$NZ6.3...@news.infostrada.it...



Rispondo agli ultimi 2 messaggi:
1 - Name "main::file" used only once: possible typo at 
file.pl
 line 28.
warning normale; se metti print "$file\n" prima di MainLoop il messaggio
scompare e ti viene stampato il file selezionato e confermato con
Accept.
2 - Use of uninitialized value in concatenation (.) or string at
   -  C:/Perl/site/lib/Tk.pm line 350
Alla riga 350 di Tk.pm si cerca di utilizzare la variabile di ambiente
HOME,
evidentemente non settata sul tuo sistema.
Comunque io ho provato a cancellarla sul mio  ed il programma da il
warning se lanciato con perl -w 
file.pl
, ma poi funziona regolarmente.
3 - Quando $start_dir = "C:\\" vengono visualizzate due colonne:
     Directories e Files e, come indicato nel manuale, la selezione
viene   accettata solo nella colonna Files.
Se metti $start_dir = "c:\\dos" la colonna directories contiene le
eventuali sottocartelle, mentre Files lista tutti i files contenuti in
"dos".
La cosa funziona anche cambiando il drive: es $start_dir = "d:\\tmp".
4 - Quanto sopra vale per un sistema standalone, con il DOS configurato
per lavorare a schermo intero e senza tornare a Windows alla fine del
programma (come fanno le finestre Dos).
Su sistemi collegati in rete occorre attenersi alle regole della rete
stessa per quanto riguarda l'individuazione del  PC di cui vuoi
esplorare i drives, ma non posso esser più preciso dato che non le uso.
HTH


Come dice il suo nome, FileSelect seleziona i files. Vedi anche il file
FileSelect.pod che dice:
  'any name can be selected as long as it's not a directory,
   after all,  this IS FileSelect!'
Per ottenere quello che vuoi, puoi leggere il contenuto del drive C: con
opendit / readdir e costruirti un ListBox con i nomi ottenuti da
readdir.
Per quanto riguarda la rete, se il programma funziona con il cavo
staccato il problema è nella configurazione della rete stessa o nella
indicazione del disco (alcuni tipi di rete rimappano le lettere dei
drive
ad es:
master   C:   D:    restano C: e D:   mentre
slave      C:   D    sono mappati C: -> E:     D: -> F:
)
HTH