Dom Nov 09, 2008 12:05 pm
|
 |
Naika
Perlero Nuevo

|
Registrado: 09 Nov 2008
Mensajes: 3
|
|
| Respuesta del servidor |
|
|
Hola, no sé si exactamente mi pregunta puede ir en esta sección, pero bueno ahí va.
Estoy realizando una pequeña Intranet, en la cuál el usuario carga un fichero de texto, este fichero se muestra en una tabla y por cada fila el usuario tiene una opción que marcar.
Finalmente se envía la petición mediante un botón final.
Mi problema es éste, si el tamaño del fichero es pequeño, unas 6 o 7 líneas, una vez que se procesa el fichero, se muestra la respuesta HTML sin problemas, pero en cambio si el fichero es más grande, todo el proceso interno se hace correctamente, pero cuando finaliza muestra la página HTML en blanco.
¿Alguien sabe qué puede estar pasando? ¿o hay alguna idea?
Muchas gracias. Cómo se podrá observar es mi primera aplicación en Perl.
¡Ah! no estoy utilizando CGI, imprimo, leo, la plantilla HTML mediante read_file() de la librería File::Slurp y envío la plantilla mediante un print()  |
|
|
|

Lun Nov 10, 2008 10:31 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Bienvenido a los foros de Perl en Español, Naika.
Ver algo de tu código sería interesante...
Quizás sea un simple problema con el vaciado de caché... Pon a 1 la variable especial $|. |
|

Mar Nov 11, 2008 1:44 am
|
 |
Naika
Perlero Nuevo

|
Registrado: 09 Nov 2008
Mensajes: 3
|
|
|
|
|
Hola explorer, gracias por responder, he inicializado la variable que me indicas por cada fila del fichero que leo e inserto en la BD, pero sigue pasando lo mismo.
El código que utilizo para cargar las filas del fichero en la tabla de la BD es el siguiente:
| Perl: | sub ProcesarFichero ($ $ $ $ ){
my $NombreFichero= shift;
my $tipoaccion = shift;
my $AlumnosInsertados = shift; # referencia
my $AlumnosRepetidos = shift; # referencia
if (-e, $NombreFichero){
#Fichero existe
my $RutaFichero= 'c:/temp/'. $NombreFichero;
my $i= 0;
my $salida;
if ($tipoaccion eq 'alta') {
my @text = read_file ( $RutaFichero ) ;
overwrite_file ('c:\temp\test123.txt', "");
append_file ('c:\temp\test123.txt', "numero de filas ". scalar(@text). "\n");
for ($i = 0; $i < scalar(@text); $i++ ) {
chomp($text[$i]);
my $linea= $text[$i];
append_file ('c:\temp\test123.txt', "-$i-$text[$i]-<br>\n");
my $NIF= substr($linea, 0, 10);
my $curso= substr($linea, 21, 3);
if (($NIF ne '') and ($curso ne '')){
if (ValidarLinea ($linea)== 1){
my $NIF= substr($linea, 0, 10);
if (ValidarNIF ($NIF)== 1){
$salida=InsertarAlumnos ($linea);
append_file ('c:\temp\test123.txt', "el NIF insertado". $NIF. "\n");
if ($salida== 1){
#insertar sin problemas
$ $AlumnosInsertados=$ $AlumnosInsertados + 1;
}else{
#con problemas
$ $AlumnosRepetidos=$ $AlumnosRepetidos + 1;
}
}else{
$ $AlumnosRepetidos=$ $AlumnosRepetidos + 1;
}
}
else {
$ $AlumnosRepetidos=$ $AlumnosRepetidos + 1;
}
}else{
append_file ('c:\temp\text123.txt', "NIf vacio". $NIF. "\n");
}
$|= 1;
} # finfor
append_file ('c:\temp\test123.txt', "NUM. LINEAS =". scalar(@text). "<BR>\n");
$ $AlumnosRepetidos= scalar(@text) - $ $AlumnosInsertados;
} |
y después de esta función dibujo el resultado con el siguiente código:
| Perl: | sub DibujarSalidaAlta ($ $ $ ){
my $DIRPLANTILLAESINE = shift;
my $AlumnosInsertados = shift;
my $AlumnosRepetidos = shift;
print "Content-type: text/html\n\n";
my $plantillaAlta = read_file ($DIRPLANTILLAESINE. "OpcionesESINE.htm");
append_file ('c:\temp\test123.txt', "ini dibujarsalidaalta\n");
my $sustituye0= '<input type="file" name="archivo"><br>';
$plantillaAlta=~ s/\<!--SeleccionaArchivo-->/ $sustituye0/;
my $sustituye1;
$sustituye1= "Alumnos Insertados: ". $AlumnosInsertados. "\n";
$plantillaAlta=~ s/<!--CargadosAlta1-->/ $sustituye1/;
#
my $sustituye2= "Alumnos con Problemas: ". $AlumnosRepetidos. "\n";
$plantillaAlta=~ s/<!--CargadosAlta2-->/ $sustituye2/;
print "Content-type: text/html\n\n";
print $plantillaAlta;
append_file ('c:\temp\test123.txt', " Imprimo plantilla de alta\n");
} |
Muchas gracias por tu tiempo. |
|

Mar Nov 11, 2008 2:53 am
|
 |
Naika
Perlero Nuevo

|
Registrado: 09 Nov 2008
Mensajes: 3
|
|
|
|
|
Hola otra vez,
ya lo he solucionado, el error estaba en insertar alumnos, cuando el alumno estaba repetido no devolvía 0 que era el resultado que yo esperaba, así que se quedaba en un bucle de errores llegando a afectar a el controlador de la BD.
Muchas Gracias por el interés. |
|
Mar Nov 11, 2008 4:08 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
La variable especial $| solo es necesario ponerla una vez, generalmente al principio del programa, o justo antes de empezar a escribir.
Recuerda que puedes borrar o modificar tus propios mensajes. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|