Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: skan en 18 Mayo 2010, 16:01 pm



Título: Duda con un ejemplo simple en Perl
Publicado por: skan en 18 Mayo 2010, 16:01 pm
Buenas

Cómo sería el código en Perl que haga lo siguiente:


Lo ejecutas en un directorio en el que hay varios archivos comprimidos .rar

El script ejecuta unrar (o similar) que extrae cada archivo en un directorio con su mismo nombre
y si dentro de ese directorio hay un archivo readme.txt  lo renombra con el mismo nombre de antes

por ejemplo, si lo hiciesemos a mano:
unrar x nombre1.rar
cd nombre1
ren readme.txt nombre1.txt  (pero sólo si existe)
y sigue descomprimiendo ...




que el unrar lo busque en el path y en el mismo directorio.


Título: Re: Duda con un ejemplo simple en Perl
Publicado por: Novlucker en 18 Mayo 2010, 16:05 pm
"Duda con un ejemplo simple", no necesitas que el script haga nada más? como que renombre por fecha o algo así? :¬¬

Saludos


Título: Re: Duda con un ejemplo simple en Perl
Publicado por: leogtz en 19 Mayo 2010, 04:04 am
¿Sistema operativo?
¿Por qué Perl si se pudiera usar directamente Bash?


Título: Re: Duda con un ejemplo simple en Perl
Publicado por: skan en 19 Mayo 2010, 13:08 pm
Porque si me acostumbro a hacerlo en Perl luego puedo hacer cosas más complejas.

Creo que ya lo tengo, más o menos

Código
  1. my @ficheros = <*.rar>;
  2. foreach my $fichero (@ficheros) {
  3.    system("unrar x $fichero");
  4.    my($nombre) = $fichero =~ /^(.+)\.rar$/i;
  5.    if (-e "$nombre/readme.txt") {
  6.        rename "$nombre/readme.txt", "$nombre/$nombre.txt";
  7.    }
  8. }