• Publicidad

Usar la función rename

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Usar la función rename

Notapor glucas » 2005-12-21 13:10 @590

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?
glucas
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2004-12-02 05:39 @277
Ubicación: España

Publicidad

Notapor kidd » 2005-12-21 18:08 @797

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: Seleccionar todo
   unless(-e $fichero){
        print "El archivo $fichero no parece existir.";
   }



SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor glucas » 2005-12-22 04:20 @222

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.
glucas
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2004-12-02 05:39 @277
Ubicación: España

Re: Usar la función rename

Notapor explorer » 2005-12-22 05:45 @281

glucas escribiste: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: Seleccionar todo
#!/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;
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor glucas » 2005-12-22 07:49 @367

Efectivamente, mi error estaba en confiar que open dir me situaba en el fichero. muchas gracias.
glucas
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2004-12-02 05:39 @277
Ubicación: España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados