[FoLUG] perl e rinominare files

ivan i.f-ml01@darthxiong.net
Gio 19 Lug 2007 09:12:44 CEST


On 2007-07-18 17:43, simona bazzocchi wrote:
> L'ho risistemato come mi hai detto... ora me li
> rinomina in modo corretto ma non riesco a scrivere
> sopra ad ogni file per togliere la prima riga, mi da
> questo errore:
> Filehandle FH opened only for input at
> /home/kei/rename.pl line 22, <FH> line xxx..

certo, se il file e' stato aperto in lettura, non puoi scriverci sopra.
devi richiudere il FH e riaprirlo in scrittura, o aprirlo su un file
diverso. vedi sotto

> 
> ecco il codice sistemato, grazie 1000
> *****************************************************
> #!/usr/bin/perl -w
> use strict;
> 
>  my $dir="/home/kei/mfold_scripts/mfold_script2/fold";
>  opendir(JAZZ,$dir) || die "I cannot open the
> directory $dir";
>  my @nomi_file= grep ! /^\.\.?\z/, readdir JAZZ;
>  closedir(JAZZ);
> 
> foreach $_(@nomi_file){
>     open FH, "$_" || die "I cannot open the file $_";
aperto solo per lettura
>     my @contenuto_file = (<FH>);
qui metti "close FH;"
>     #print "@contenuto_file";
>     my $nuovo_nome_file = shift @contenuto_file; 
>     $nuovo_nome_file=~ s/\>|\n//g;
a seconda di cosa c'e' nella linea .... "$nuovo_nome_file=~ s/\W//g;"
>     #print "$_\n";
>     #print "$nuovo_nome_file\n";
>     #print "@contenuto_file";
questo non e' molto bellino
>     print FH @contenuto_file;
>     rename("$_","$nuovo_nome_file");
meglio fare
open FH, ">$nuovo_nome_file" or die "$nuovo_nome_file: $!"
print FH @contenuto_file;
close FH;
unlink $_;
si potrebbe migliorare la gestione degli errori, ma va bene anche cosi'
>                            }
che ci fa la '}' laggiu' in fondo ?


-- 
  (@_ Ivan Fabris, S. Sofia (FC,it) PowerPC e Debian GNU/linux SID _*)
  //\         www.folug.org    pgp key @ www.keyserver.net         /\\
  V_/_                  lunga vita e prosperita'                  _\_V



Maggiori informazioni sulla lista FoLUG