• Publicidad

unlink no me funciona

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

unlink no me funciona

Notapor diana » 2005-09-23 21:09 @923

Hola,

Espero que pueda alguien ayudarme: tengo una lista de documentos y de éstos tengo que eliminar algunos de ellos. Para eso lo que hago es mandar llamar al nombre del archivo que tengo importado en un paquete y le hago el unlink, pero no me funciona esto. ¿Me podrían decir cuál es mi error? Se los agradecería.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         if($linea =~ /404 Not Found/ || $linea=~ /54\s$/){
  2.                 unlink($nombreArchivo);
  3.                 print "archivo $nombreArchivo a eliminar";
  4.         }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Bye
diana
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2005-07-01 20:27 @894

Publicidad

Notapor explorer39 » 2005-09-24 05:49 @284

Comprueba que el directorio desde donde se está ejecutando el script es compatible con la dirección del fichero que quieres borrar.

O dicho de otra forma:
  • colócate en el mismo directorio del script o en el directorio de trabajo si te has movido con un chdir() dentro del script
  • lanza tu script. Como has puesto un print(), verás los nombres de los ficheros que quieres borrar
  • ejecuta un comando de borrado (un del o un rm) con exactamente el nombre del fichero que ha salido en pantalla
Si no puede borrarlo, saldrá en pantalla la razón del error.

Quizás tengas que poner delante del nombre del fichero el camino completo dentro del árbol de directorios, para indicar dónde están guardados esos ficheros.
explorer39
 

Notapor diana » 2005-09-24 20:48 @908

Pues ya hice lo que me dijiste y sigue sin funcionar. Obtuve la ruta desde la raíz y se la pasé completa al unlink. No entiendo qué es lo que pasa :? Los archivos a eliminar y mi script están en el mismo directorio, ¿alguna otra idea?

Gracias
diana
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2005-07-01 20:27 @894

Notapor explorer39 » 2005-09-25 05:59 @291

Se tienen que dar las siguientes condiciones (de memoria):
  • El script debe tener permiso de escritura sobre los ficheros o sobre el directorio donde están los ficheros
  • Si el directorio => de trabajo <= del script es el mismo que el de los ficheros, no es necesario incluir ningún camino en el unlink()
  • En ocasiones hay que 'escapar' los nombres de los ficheros, por exigencias del sistema operativo
Haz la siguiente prueba: entra en el directorio donde están los ficheros y el script y ejecuta:

perl -le 'print unlink fichero.txt'

siendo fichero.txt alguno de los ficheros que quieres borrar. Si no puede borrarlo el unlink(), saldrá un 0.

Si sale un 1 es que desde Perl sí se puede borrar los ficheros, así que el problema está en el script.

Si no se puede borrar, inténtalo ejecutando un rm o del desde el sistema y mira a ver si el sistema operativo te devuelve un error.

¿Quién ejecuta el script? ¿Tu o un dæmon como el httpd a través de un cgi, o quizás un crontab? Según el que sea, dependerá de si puede borrarlos según los permisos que tengan los ficheros...
explorer39
 

Notapor diana » 2005-09-29 21:33 @939

Gracias, pero ya encontré el problema: no puedo borrar los archivos porque tengo un archivo que utiliza un archivo base y lo divide en varios y a partir de ellos quiero borrar algunos, por lo que me dice que están siendo usados por otro proceso. Estoy usando un paquete para eliminar los archivos, entonces lo que tengo que hacer es poner independientes los procesos de dividir y borrar los archivos.

Gracias por su ayuda.
Bye
diana
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2005-07-01 20:27 @894

Notapor explorer39 » 2005-09-30 06:07 @296

Pero, Diana... ¡¡¡no me digas que estás usando Windows!!! :shock:
explorer39
 

Notapor diana » 2005-10-07 19:59 @874

Pues sí, a mi tampoco me agrada mucho la idea pero no tengo otra opción porque la computadora que tenía se le quemó la fuente y no he podido conseguir otra porque es de 24 pines.

Bye
diana
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2005-07-01 20:27 @894


Volver a Básico

¿Quién está conectado?

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

cron