• Publicidad

Abrir un HTML desde Perl

¿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.

Abrir un HTML desde Perl

Notapor Emerson » 2007-06-16 07:55 @372

Primero que todo saludos a los perlero de este foro.

Tengo un pequeño problema, estoy terminando un sistema de información con Perl y muestra los reportes en HTML, mi pregunta es cómo hago para abrir un archivo HTML desde el código de Perl. En Windows lo hago mediante esta línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 if(open(sx1,">I:/html/reporte_proveedores_todos.html")){
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

pero como tiene que ser multiplataforma necesito saber cómo lo hago en Linux; uso Ubuntu y el archivo está en esta dirección:
/home/mrson/Desktop/Material_Sidispol/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html

graciasssssss
MRSON
Emerson
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2006-02-16 08:39 @402

Publicidad

Notapor explorer » 2007-06-16 08:35 @399

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if(open(sx1,">/home/mrson/Desktop/Material_Sidispol/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html")){
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra cosa es que quieras hacerlo realmente multiplataforma.

Para ello debes resolver los siguientes problemas:
* El programa debería saber primero en qué sistema operativo está corriendo, algo que es fácil de saber consultando la variable $^O.
* Según en qué sistema se encuentre, deberá inicializar de una manera o de otra las variables que almacenan los directorios de trabajo.
* A la hora de hacer tareas con ficheros y directorios, se puede optar por usar siempre el separador '/' entre directorios (Perl hará las conversiones después), pero también es aconsejable hacer uso de la función catfile() del módulo File::Spec.
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

explorer

Notapor Emerson » 2007-06-16 14:19 @638

ok, hice lo que me explicaste, ya hice todo pero no me abre el archivo HTML;
yo llamo a esta función

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub crear_reporte_prov{

    $paginaParte1=""; $paginaParte2=""; $paginaParte3=""; $pagina="";
    if( open(sx1,-file=>"/home/mrson/Desktop/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html") ) {
        $paginaParte1="<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Documento sin t&iacute;tulo</title>
<style type='text/css'>
<!--
body {
    margin-top: 0px;
}
.Estilo1 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Estilo15 {
    font-size: 9px;
    font-weight: bold;
}
.Estilo19 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8px; }
.Estilo21 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 14px;
}
.Estilo22 {color: #FFFFFF}
-->
</style></head>
<body>
<table width='800' border='0' align='center' cellpadding='0' cellspacing='0' >
<tr>
<td><img src='imagenes/top.gif' width='775' height='126' /></td>
</tr>
</table>
<table width='800' border='0' align='center' bordercolor='#000000' cellpadding='0' cellspacing='0' >
<tr>
<td bgcolor='#003366'><div align='center' class='Estilo22'><span class='Estilo21'>PROVEEDORES</span></div></td>
</tr>
</table>
<table width='800' border='1' align='center' bordercolor='#000000' cellpadding='0' cellspacing='0' >
<tr bgcolor='#CCCCCC'>
<td width='45' height='14'><div align='center' class='Estilo15'>      <span class='Estilo1'>C&Oacute;DIGO</span></div></td>
<td width='127'><div align='center' class='Estilo15'>      <span class='Estilo1'>NOMBRE</span></div></td>
<td width='70'><div align='center' class='Estilo15'>      <span class='Estilo1'>RIF.</span></div></td>
<td width='78'><div align='center' class='Estilo15'>      <span class='Estilo1'>TELF.</span></div></td>
<td width='124'><div align='center' class='Estilo15'>      <span class='Estilo1'>REPRESENTANTE</span></div></td>
<td width='74'><div align='center' class='Estilo15'>      <span class='Estilo1'>F. REGISTRO  </span></div></td>
<td width='54'><div align='center' class='Estilo15'>      <span class='Estilo1'>ESTADO</span></div></td>
<td width='210'><div align='center' class='Estilo15'>      <span class='Estilo1'>DIRECCI&Oacute;N</span></div></td>
</tr>"
;

        use DBI;
        $db_user="root";
        $db_pass="051294";
        $host_name="localhost";
        $db_name="bd_sidispol";
        $q_string="DBI:mysql:host=$host_name;database=$db_name";
        $coneccion=DBI->connect ($q_string, $db_user, $db_pass);
        $consulta=$coneccion->prepare("select * from tbl_empresa order by cod_emp");
        $consulta->execute();
        #$i=0;
        while( @datos_conproveedor=$consulta->fetchrow_array() ) {
            @fecha_11= split(/-/, $datos_conproveedor[9]);
            $paginaparte2=$paginaparte2."
<tr>
<td><div align='center'><span class='Estilo19'>$datos_conproveedor[0]</span></div></td>
<td><span class='Estilo19'>$datos_conproveedor[1]</span></td>
<td><div align='center'><span class='Estilo19'>$datos_conproveedor[2]</span></div></td>
<td><div align='center'><span class='Estilo19'>$datos_conproveedor[4]-$datos_conproveedor[5]</span></div></td>
<td><div align='center'><span class='Estilo19'>$datos_conproveedor[8]</span></div></td>
<td><div align='center'><span class='Estilo19'>$fecha_11[2]-$fecha_11[1]-$fecha_11[0]</span></div></td>
<td><div align='center'><span class='Estilo19'>$datos_conproveedor[7]</span></div></td>
<td><span class='Estilo19'>$datos_conproveedor[6]</span></td>
</tr>"
;
            $i++;
        }

        $paginaparte3="
</table>
</body>
</html>"
;

        $pagina=$paginaParte1. $paginaparte2. $paginaparte3;

        print sx1 "$pagina";

        close(sx1);

        system("///home/mrson/Desktop/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html");

    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
MRSON
Emerson
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2006-02-16 08:39 @402

Notapor explorer » 2007-06-16 20:28 @895

¿Qué es esto?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(sx1,-file=>"...")
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Ese open() no lo conozco en Perl.

Si vuelves a usar el open() del Perl, lo recomendable es hacerlo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $fichero = '/home/mrson/Desktop/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html';
open(SX1,">$fichero") or die "ERROR: No puedo abrir el fichero $fichero: $!\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Así sabremos porqué no puedes abrirlo en modo escritura.

Y otro consejo sería: aprende a usar el módulo CGI y te ahorrarás el escribir muuuuuuuuuuuuucho código HTML.
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 Perl user » 2007-06-18 20:26 @893

Creo que ya no recomendaría el módulo CGI directamente, a fin de cuentas, tendrías que generar HTML incrustando llamadas en el código, y si ya tiene código HTML prácticamente estático, lo mejor sería utilizar algún módulo que funcione con plantillas.

Text::Template, HTML::Template, Template Toolkit o Catalyst, cualquiera de ellos (en orden de complejidad) podría ser mucho mejor.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron