• Publicidad

Problema al abrir un archivo

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

Problema al abrir un archivo

Notapor davidlo » 2007-01-22 12:53 @578

Hola, tengo un problema al abrir o crear un archivo. Si pongo la ruta absoluta, funciona correctamente:

Código: Seleccionar todo
my $fh = FileHandle->new();

if (!($fh->open("+>/home/david/datos/fichero.dat")))
{
      print("Fallo al crear el fichero\n");
        $fh=undef;
    }else{
        print "DEBUG: fichero abierto con éxito\n";
        $fh->autoflush(1);
    }



Pero si pongo la ruta relativa al directorio local, no funciona:


Código: Seleccionar todo
my $fh = FileHandle->new();

if (!($fh->open("+>./datos/fichero.dat")))
{
      print("Fallo al crear el fichero\n");
        $fh=undef;
    }else{
        print "DEBUG: fichero abierto con éxito\n";
        $fh->autoflush(1);
    }




¿A qué se debe?
davidlo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2006-11-11 05:58 @290
Ubicación: Sevilla, España

Publicidad

Notapor explorer » 2007-01-22 13:09 @589

¿Y en qué directorio está el script y en qué directorio lo estás ejecutando?

Sería recomendable que pintaras el valor de $! para saber porqué ha fallado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor davidlo » 2007-01-22 13:18 @596

A ver, mi script está en /home/david , y lo ejecuto desde allí. He visto ahora que si lo ejecuto desde un terminal, escribiendo

perl miprogramita.pl

funciona correctamente, mostrando en la consola:
...
DEBUG: fichero abierto con éxito
...

En cualquiera de los doscasos, con ruta absoluta y con ruta relativa.

Estoy desarrollando con KDevelop y lo que me sucede es que cuando lo ejecuto desde el KDevelop (opción "Construir"->"ejecutar programa principal") solamente funciona si la ruta es absoluta.
davidlo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2006-11-11 05:58 @290
Ubicación: Sevilla, España

Notapor explorer » 2007-01-22 13:33 @606

Seguramente porque el Kdevelop lo está ejecutando en un directorio distinto.

El valor de $! te lo dirá. Puedes hacer que además pinte el valor del directorio actual con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Cwd;
print cwd;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Siempre es mejor poner un chdir al principio, si queremos usar direcciones relativas, para asegurarnos de que partimos de un supuesto cierto: la posición del sistema de ficheros raíz del trabajo a realizar. Si no podemos, salimos con un die y listo. Si podemos, tratamos todas las rutas de forma relativa.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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