[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