Vie May 02, 2008 5:51 pm
|
 |
jbgae
Perlero Nuevo

|
Registrado: 02 May 2008
Mensajes: 4
|
|
| Error al introducir el contenido de un fichero a un vector |
|
|
Hola, tengo un problemilla con un ejercicio. Aquí os muestro lo que tengo:
| Perl: | 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";
}
}
} |
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. |
|
|
|

Vie May 02, 2008 6:15 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Vie May 02, 2008 6:23 pm
|
 |
jbgae
Perlero Nuevo

|
Registrado: 02 May 2008
Mensajes: 4
|
|
|
|
|
| Ya lo entendí, muchas gracias por tu claridad y sobre todo por tu rapidez al contestar |
|
Powered by phpBB © 2001, 2005 phpBB Group
|