Newsgroup: it.comp.lang.perl
Titolo: unlink

Ciao a tutti,
nonostante mi sia letto perlfunc e i manuali (programmare in perl, perl
guida di riferimento)
non sono riuscito a fare funzionare la funzione "unlink"
In pratica devo, sulla base di un scelta operata tramite form andare a
cancellare un file in una directory definita.
Ho provato due strade:
una più breve:
if ($FORM{'background'} ne "") {
$background = $FORM{'background'};
  opendir (SFONDI, "$dirsfondi") || die "Non è possibile aprire $dirsfondi:
$!\n";
  unlink $background;
  closedir (SFONDI);
  print "Content-type: text/html\n\n";
        print "<html><head><title>\n";
        print "Pagina di prova\n";
        print "</title></head>\n";
        print "<body>\n";
        print "$background\n";
        print "</body></html>\n\n";
}
Dove background è il nome del file da eliminare e che non è manipolabile
dall'utilizzatore in quanto la lista (tipo select) è
generata da un altro script che legge la stessa directory (quindi non ci
sono errori di compilazione)
La parte print l'ho inserita solo per sapere se lo script si impallava o
meno.
La seconda strada è la seguente:
if ($FORM{'background'} ne "") {
  opendir (SFONDI, "$dirsfondi") || die "Non è possibile aprire $dirsfondi:
$!\n";
  @allsfondi = grep !/^\.\.?$/, readdir SFONDI;
  closedir (SFONDI);
  $background = $FORM{'background'};
  opendir (SFONDI1, "$dirsfondi") || die "Non è possibile aprire $dirsfondi:
$!\n";
     foreach $allsfondi (@allsfondi){
        $_ = $allsfondi;
        $_ =~ s/^\s+//;
        $_ =~ s/\s+$//;
        if (/$background/){
        unlink $_;
        print "Content-type: text/html\n\n";
        print "<html><head><title>\n";
        print "Pagina di prova\n";
        print "</title></head>\n";
        print "<body>\n";
        print "$_\n";
        print "</body></html>\n\n";
        }
     }
closedir (SFONDI1);
}
Dove background è il nome del file da eliminare e che non è manipolabile
dall'utilizzatore in quanto la lista (tipo select) è
generata da un altro script che legge la stessa directory (quindi non ci
sono errori di compilazione)
La parte print l'ho inserita solo per sapere se lo script si impallava o
meno.
Inoltre qui seguo la procedura di apertura e lettura della directory,
memorizzazione dell'elenco nell'array @allsfondi,
Confronto del dato inserito nel form con quanto presente nella directory e
se rinvenuto cancellazione.
Il problema è che il debugger non mi da errori di sintassi, lo script opera
perchè mi appare la pagina di controllo,
ma.......il file non viene cancellato.
Mi pare evidente che compio un errore di impostazione, ma non riesco a
capire quale.
Se qualcuno mi aiuta lo ringrazio fin da ora.
Ciao.
--
Marco Allegretti
shi...@kataweb.it
http://www.shishii.com

ma.......il file non viene cancellato.
Forse manca il path, prova una cosa tipo:
unlink "$dirsfondi/$_";
	Michele.
-- 
Michele Beltrame
m...@io.com
http://www.io.com/~mick/
ICQ# 76660101
==> Visita il sito di it.comp.lang.perl: 
http://www.perl-it.org
==> Sei del triveneto e vuoi unirti ai Perl Mongers? Scrivimi!

 ha scritto nel messaggio
news:slrn8ru9...@karma.italpro.to...


Potrebbe essere perchč č una gif?
Assolutamente no ;) : unlink cancella qualsiasi file, indipendentemente
dall'estensione o dal contenuto.


 wrote:
: if ($FORM{'background'} ne "") {
: $background = $FORM{'background'};
:   opendir (SFONDI, "$dirsfondi") || die "Non è possibile aprire $dirsfondi:
: $!\n";
:   unlink $background;
:   closedir (SFONDI);
potro` dire una cazzata, ma non dovresti fare "cd", piu` che "opendir" ??
cioa, .mau.

 ha scritto nel messaggio
news:8pnl3p$75c$1...@beatles.cselt.it...

Ciao,
scusa cosa è "cd", mi sbaglierò ma non mi risulta essere una istruzione
perl.
Io conosco solo la cd di ms-dos.
Ciao


 wrote:
: > potro` dire una cazzata, ma non dovresti fare "cd", piu` che "opendir" ??
: Ciao,
: 
: scusa cosa è "cd", mi sbaglierò ma non mi risulta essere una istruzione
: perl.
"cd" e` ovviamente "chdir".
Quello che intendevo dire e` che opendir() ti fa leggere il contenuto
della directory, ma non ti sposta dentro. Quindi unlink() non dovrebbe
fare nulla perche` nella directory di partenza il file non c'e` .
.mau.

 ha scritto nel messaggio
news:8po4cd$eod$1...@beatles.cselt.it...

Ok grazie Maurizio adesso ho capito.
Ciao.
