Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Incomprensioni con File::Util

0 views
Skip to first unread message

Emanuele Zeppieri

unread,
Jul 9, 2008, 1:27:16 PM7/9/08
to
simone....@gmail.com wrote:

> Ho un programma che deve prendere un tot di file in una directory e
> inserirli in un campo blob di un DB Oracle. Per manipolare i file ho
> scelto di utilizzare File::Util

Scusa se non rispondo direttamente alla tua domanda, ma io mi terrei
accuratamente alla larga da questo File::Util.

Ha un'interfaccia veramente orripilante, ed ha anche dei prerequisiti
inspiegabili.

Quello che serve a te si fa banalmente con il builtin glob() (o con
File::Glob, che è un modulo core) e null'altro.

Se poi volessi scrivere codice portabile Win/*nix, basterebbe
aggiungervi File::Spec per la manipolazione dei path (per inciso, il
codice che hai postato funzionerebbe solo su Windows, in quanto hai un
"\" hardcoded come separatore.)

SEE ALSO

File::Find, File::Find::Rule

Ciao,
Emanuele

simone....@gmail.com

unread,
Jul 9, 2008, 5:00:53 AM7/9/08
to
Ho un programma che deve prendere un tot di file in una directory e
inserirli in un campo blob di un DB Oracle. Per manipolare i file ho
scelto di utilizzare File::Util e nella mia idea il tutto dovrebbe
funzionare così:

my $fu = File::Util->new();

my @images = $fu->list_dir($path, qw/--files-only --pattern=\.JPG$ --
no-fsdot/);

foreach $image (@images) {
$bin_content = $fu->load_file ("$path\\$image");

#fai quel che devi fare
}

Nel mio caso la variabile $path contiene un percorso assoluto in
formato Windows.
Il metodo load file si arrabbia e mi dice che il path che gli ho
passato non esiste... Ma come fa a non esistere se mi ha elencato
tutti i file che ci sono dentro?

Il programma mi restituisce un messaggio d'errore molto dettagliato in
cui in pratica mi mostra che il percorso assoluto che gli ho dato in
pasto se lo è elaborato e ci ha attaccato un punto davanti...
Per intenderci

C:\temp

è diventato

.\C\\Temp

Insomma, sembrerebbe che abbia "relativizzato" il percorso rispetto
alla directory in cui è contenuto lo script...

Come posso evitarlo?

Grazie in anticipo

Simone

simone....@gmail.com

unread,
Jul 11, 2008, 9:58:28 AM7/11/08
to
> Quello che serve a te si fa banalmente con il builtin glob() (o con
> File::Glob, che è un modulo core) e null'altro.

Ha funzionato grazie ... Ci ho aggiunto solo il modulo File::Slurp,
per papparmi il contenuto

Ciao

0 new messages