• Publicidad

Error al introducir el contenido de un fichero a un vector

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

Error al introducir el contenido de un fichero a un vector

Notapor jbgae » 2008-05-02 18:51 @827

Hola, tengo un problemilla con un ejercicio. Aquí os muestro lo que tengo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
opendir (DIR, $dir);
@contenido_directorio =readdir (DIR);
closedir (DIR);

if (-s $fich){   #$fich es un argumento que ya me han pasado
        open (FICH,">>$fich");
        @contenido_fichero = <FICH>;      #PROBLEMA
       
        foreach $elemento (@contenido_directorio){
                $ruta = $dir."/".$elemento;
                foreach $linea (@contenido_fichero){  #esto tampoco va
                        @campos = split / /, $linea;

                        $id = $campos[0];
                        $orden = chomp($campos[-1]);
                        if (-r $ruta && -x $ruta && !(-d $ruta)){
                                if($ruta eq $orden){
                                        $id++;
                                        $min = 0;
                                        $mes = "*";
                                        $dia_semana = "*";
                                        print FICH "$id $min $hora $dia $mes $dia_semana $ruta\n";
                                }
                        }
                }
               
        }
}

else{
        open (FICH,">$fich");
       
        foreach $elemento (@contenido_directorio){
                $ruta = $dir."/".$elemento;
                if (-r $ruta && -x $ruta && !(-d $ruta)){
                                $id++;
                                $min = 0;
                                $mes = "*";
                                $dia_semana = "*";
                                print FICH "$id $min $hora $dia $mes $dia_semana $ruta\n";
                               
                }
        }

}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Se trata que si el fichero no existe o se encuentra vacío, pues tengo que crearlo e introducir en el una línea por cada script que tenga el directorio, y si existe pues comprobar que el script no esté ya en el fichero y si no lo está pues introducir una linea en él. Creo que no me explicado muy bien.

Bueno mi problema es cuando realizo @contenido_fichero = <FICH> ya que este vector siempre me sale que está vacío cuando el fichero no lo está, y realmente no entiendo qué es lo que hago mal.

Espero que puedan ayudarme.

Muchas gracias de antemano.
jbgae
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-05-02 18:28 @811

Publicidad

Notapor explorer » 2008-05-02 19:15 @844

Bienvenido a los foros de Perl en Español.

Estás abriendo el fichero en modo añadir (>>). Usa el modo lectura escritura (+<).

O primero leer todo el contenido y luego volver a abrirlo en modo escritura.

Si abres el fichero en modo añadir, el puntero del fichero se coloca al final, por lo que no lees nada con esa sentencia.
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 jbgae » 2008-05-02 19:23 @849

Ya lo entendí, muchas gracias por tu claridad y sobre todo por tu rapidez al contestar
jbgae
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-05-02 18:28 @811


Volver a Básico

¿Quién está conectado?

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