Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Usar la función rename

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Mie Dic 21, 2005 12:10 pm
glucas
Perlero Nuevo
Perlero Nuevo
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
Usar la función rename Responder citando

Intento utilizar la funcion rename con el siguiente codigo.
my $dir_consulta = "E:/camb_ext/";
my $fichero = '';
my $resultado = '';


if(opendir(DIRECTORIO,$dir_consulta))
{
#Leemos el listado de fichero que lo componen
foreach (readdir DIRECTORIO)
{
$fichero = $_;
#Seleccionamos los fichero que tengan un nombre con el formato *.*,
#donde * representa cualquier cadena alfanumérica
if ($fichero =~ /\w\.\w/)
{
my $aux = substr($fichero,0,(length($fichero)-4));
my $nuevo_nombre = $aux."_p.jpg";
$resultado = rename($fichero,$nuevo_nombre);

}
}
print "FIN";
}
else
{
print "no se abre ".$dir_consulta;
}

pero no consigo mi objetivo. me imagino que pudiera ser un problema de permisos, pero no se resolverlo (la carperta es de solo lectura y no le puedo cambiar el atributo, he intentado compartirla dando permisos a Todos pero tampoco soluciono). ¿se os ocurre algo?
Mensaje Mie Dic 21, 2005 5:08 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Me parece que tu problema es que no estás poniendo la ruta completa del archivo que quieres renombrar, revisa que tengas correcta la ruta.

Para checarlo puedes intentar:

Código:

   unless(-e $fichero){
        print "El archivo $fichero no parece existir.";
   }



SALUDOS
Mensaje Jue Dic 22, 2005 3:20 am
glucas
Perlero Nuevo
Perlero Nuevo
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
Responder citando

He añadido el codigo que me indicas, y obtengo el siguiente mensaje: estos dos archivo son los que quiero cambiar de nombre precisamente...

El archivo 2125.jpg no parece existir.
El archivo 2125_0.jpg no parece existir

supongo que al abrir el directorio con OPENDIR ya me situa en el mismo y lee desde aqui.
tengo dos particiones en el disco duro y he probado a crear la carpeta en ambas y me da lo mismo. No se me ocurre otra cosa.
Mensaje Jue Dic 22, 2005 4:45 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

glucas escribió:
He añadido el codigo que me indicas, y obtengo el siguiente mensaje: estos dos archivo son los que quiero cambiar de nombre precisamente...

El archivo 2125.jpg no parece existir.
El archivo 2125_0.jpg no parece existir

supongo que al abrir el directorio con OPENDIR ya me situa en el mismo y lee desde aqui.
tengo dos particiones en el disco duro y he probado a crear la carpeta en ambas y me da lo mismo. No se me ocurre otra cosa.
Pues no... opendir NO te sitúa en el mismo directorio en donde se encuentran los ficheros. Simplemente te devuelve la lista de directorios y ficheros que hay dentro del directorio que acabas de abrir.
Tienes dos opciones:
1.- O te colocas dentro del directorio donde quieres trabajar, con la función chdir, o
2.- Agregas el directorio en todas las operaciones de ficheros. Por ejemplo:
Código:
#!/usr/bin/perl -w

my $dir_consulta = "E:/camb_ext/";
my $fichero = '';
my $resultado = '';

if(opendir(DIRECTORIO,$dir_consulta))
{
  #Leemos el listado de fichero que lo componen
  foreach (readdir DIRECTORIO)
  {
    $fichero = $_;
    #Seleccionamos los fichero que tengan un nombre con el formato *.*,
    #donde * representa cualquier cadena alfanumérica
    if ($fichero =~ /\w+\.\w+/)
    {
      my $nuevo_nombre = substr($fichero,0,-4) . "_p.jpg";
      $resultado = rename("$dir_consulta/$fichero","$dir_consulta/$nuevo_nombre");
      print "Renombrando $fichero a $nuevo_nombre: $resultado : $!\n";
    }
  }
  print "FIN\n";
}
else
{
  print "no se abre ".$dir_consulta;
}
closedir DIRECTORIO;
Mensaje Jue Dic 22, 2005 6:49 am
glucas
Perlero Nuevo
Perlero Nuevo
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
Responder citando

Efectivamente, mi error estaba en confiar que open dir me situaba en el fichero. muchas gracias.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group