• Publicidad

¿Convertir un texto plano a un html/xml?

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

¿Convertir un texto plano a un html/xml?

Notapor jrodola » 2007-05-18 15:40 @695

Hola a todos,

Os quería preguntar si alguno sabe, tiene algún ejemplo o me puede dar una pista (qué tipo de funciones a usar..) de cómo se puede pasar un fichero que está en texto plano (es una tabla con valores que sale como output de un programa y que se guarda en un .log) a un html para que se pueda ver via web.

Soy nuevo en esto del perl, así que estoy muy perdido.

Cualquier sugerencia será bienvenida.

Muchas gracias por adelantado

Saludos,

Javi
jrodola
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-05-18 15:36 @691

Publicidad

Notapor explorer » 2007-05-18 18:02 @793

Bienvenido a los foros de Perl en Español.

Sería interesante ver un ejemplo de ese fichero, aunque sea con datos inventados. Y un ejemplo de cómo quieres la salida.

Se puede hacer un programa muy sencillo que genere la salida en html. También hay multitud de módulos que realizan justo esa tarea: convertir una tabla de datos en html, como el Data::Table, el HTML::Table, HTML::TextToHTML o incluso un comando completo: txt2html.
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 jrodola » 2007-05-19 06:46 @323

Muchas gracias.

He encontrado googleando esto: http://cwashington.netreach.net/depo/view.asp?Index=77

Tiene muy buena pinta, aunque sólo pasa de txt a html sin procesar lo que hay dentro.

Miraré lo que me acabas de comentar.

Un ejemplo de un txt a procesar sería esto:
Código: Seleccionar todo
Date: 2007-04-25
Object          Counter                           13:30  13:45  14:00  14:15  14:30  14:45  15:00  15:15  15:30  15:45  16:00
IurLink=Iur_111 pmNoNormalRabReleaseCs64              0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleaseCsStream          0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleasePacket            0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleasePacketStream      0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleaseSpeech            0      0      0      0      0      0      0      0      0      0      1
IurLink=Iur_111 pmNoOfRlForDriftingUesPerDrnc         0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseCs64              0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseCsStream          0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleasePacket            0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleasePacketStream      0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseSpeech            0      0      0      0      0      0      0      0      0      0      0

Es decir, es una tabla simple, por eso tengo que maniobrar para que el script meta también etiquetas <tr> <td> y <table>

Muchas gracias por tu ayuda.

Saludos
jrodola
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-05-18 15:36 @691

Notapor explorer » 2007-05-19 16:32 @731

Pero... si el formato está facilísimo...

Hacer el programa es muy fácil...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l

use CGI qw':standard *table';

print start_html("Tabla");

print start_table();
while ( <DATA> ) {
    chomp;
    if ( /^Date/ ) {
        print caption($_);
    }
    else {
        @campos = split " ", $_;
        if ( /^Object/ ) {
            print Tr(th([ @campos ]));
        }
        else {
            print Tr(td([ @campos ]));
        }
    }
}
print end_table;
print end_html;

__DATA__
Date: 2007-04-25
Object          Counter                           13:30  13:45  14:00  14:15  14:30  14:45  15:00  15:15  15:30  15:45  16:00
IurLink=Iur_111 pmNoNormalRabReleaseCs64              0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleaseCsStream          0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleasePacket            0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleasePacketStream      0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoNormalRabReleaseSpeech            0      0      0      0      0      0      0      0      0      0      1
IurLink=Iur_111 pmNoOfRlForDriftingUesPerDrnc         0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseCs64              0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseCsStream          0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleasePacket            0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleasePacketStream      0      0      0      0      0      0      0      0      0      0      0
IurLink=Iur_111 pmNoSystemRabReleaseSpeech            0      0      0      0      0      0      0      0      0      0      0
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
(perdón por la soberbia, estoy un poco borracho por culpa de la boda de un amigo. Quizás también no he elegido la mejor solución).
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 jrodola » 2007-05-20 07:04 @336

Hola

El fichero de texto plano como input va cambiando, no siempre es el mismo, así que no se le puede meter en el código. ¿Cómo se le puede meter como argumento? ¿Con @ARGV?

Gracias de nuevo

Saludos,

Javi
jrodola
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-05-18 15:36 @691

Notapor explorer » 2007-05-20 07:24 @350

Sí que puedes pasárselo como argumento al programa:
Código: Seleccionar todo
programa.pl fichero.log

luego, sólo tienes que cambiar <DATA> por <>.

Lo que hace Perl es abrir el fichero pasado como argumento a tu programa y lo conecta a la entrada estándar, por eso usamos <>.
Más información: perlrun.
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 jrodola » 2007-05-20 08:18 @387

¡Muchas gracias por todo, de verdad!

Mañana lo pruebo y te cuento.

Saludos

Javi
jrodola
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-05-18 15:36 @691

Notapor jrodola » 2007-05-21 04:48 @241

Hola,

El texto que quiero procesar es:

Código: Seleccionar todo
 1) RNC Node Traffic Performance
Report from 2007-05-21 07:45 UTC to 2007-05-21 08:44 UTC

Start Time: 2007-05-21 07:45:00 End Time: 2007-05-21 08:30:00
Object Counter           
       CS64CCSR       99.7
       CS64Drop          0
       NoRrcConnReq  14420
       PSCCSR         90.5
       PSDrop          9.3
       RrcSuc         98.8
       SpchCCSR       99.1
       SpchDrop        0.6


 2) RNC Node Traffic Performance, Hour by Hour
Report from 2007-05-21 07:45 UTC to 2007-05-21 08:44 UTC

Date: 2007-05-21
Object Counter       07:00  08:00
       CS64CCSR          0   99.8
       CS64Drop        N/A      0
       NoRrcConnReq   3380  11040
       PSCCSR          100   87.8
       PSDrop            0   12.0
       RrcSuc         98.6   98.9
       SpchCCSR       98.4   99.2
       SpchDrop        0.6    0.6

[...]

La cosa sería separarlo en dos tablas diferentes, cada una con su título, como esto:


Sintáxis: [ Descargar ] [ Ocultar ]
  1. <!DOCTYPE html 
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> 
  5. <head> 
  6. <title>Estadísticas</title> 
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  8. </head> 
  9. <body> 
  10.  
  11. <table border="1"> 
  12. <caption>1) RNC Node Traffic Performance</caption> 
  13. <tr><td>Report from 2007-05-21 07:45 UTC to 2007-05-21 08:44 UTC</td></tr> 
  14. <tr><td>Start Time: 2007-05-21 07:45:00 End Time: 2007-05-21 08:30:00</td></tr> 
  15. <tr><th>Object Counter</th></tr> 
  16. <tr><td>CS64CCSR</td> <td>99.7</td></tr> 
  17. <tr><td>CS64Drop</td> <td>0</td></tr> 
  18. <tr><td>NoRrcConnReq</td> <td>14420</td></tr> 
  19. <tr><td>PSCCSR</td> <td>90.5</td></tr> 
  20. <tr><td>PSDrop</td> <td>9.3</td></tr> 
  21. <tr><td>RrcSuc</td> <td>98.8</td></tr> 
  22. <tr><td>SpchCCSR</td> <td>99.1</td></tr> 
  23. <tr><td>SpchDrop</td> <td>0.6</td></tr> 
  24. <tr></tr> 
  25. <tr></tr> 
  26. </table> 
  27. <br> 
  28. <table border="1"> 
  29. <caption>2) RNC Node Traffic Performance, Hour by Hour</caption> 
  30. <tr><td>Report from 2007-05-21 07:45 UTC to 2007-05-21 08:44 UTC</td></tr> 
  31. <tr><td>Date: 2007-05-21 </tr> 
  32. <tr><th>Object Counter</th> <th>07:00</th> <th>08:00</th></tr> 
  33. <tr><td>CS64CCSR</td> <td>0</td> <td>99.8</td></tr> 
  34. <tr><td>CS64Drop</td> <td>N/A</td> <td>0</td></tr> 
  35. <tr><td>NoRrcConnReq</td> <td>3380</td> <td>11040</td></tr> 
  36. <tr><td>PSCCSR</td> <td>100</td> <td>87.8</td></tr> 
  37. <tr><td>PSDrop</td> <td>0</td> <td>12.0</td></tr> 
  38. <tr><td>RrcSuc</td> <td>98.6</td> <td>98.9</td></tr> 
  39. <tr><td>SpchCCSR</td> <td>98.4</td> <td>99.2</td></tr> 
  40. <tr><td>SpchDrop</td> <td>0.6</td> <td>0.6</td></tr> 
  41. <tr></tr> 
  42. </table> 
  43.  
  44. </body> 
  45. </html> 


¿Me puedes echar una mano para ver cómo puedo separarlo en dos tablas?

Muchísimas gracias de nuevo por todo.

Saludos,

Javi
jrodola
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-05-18 15:36 @691


Volver a Intermedio

¿Quién está conectado?

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