Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Abrir un HTML desde Perl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Sab Jun 16, 2007 6:55 am
Emerson
Perlero Nuevo
Perlero Nuevo
Registrado: 16 Feb 2006
Mensajes: 32
Abrir un HTML desde Perl Responder citando

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
Perl:
if(open(sx1,">I:/html/reporte_proveedores_todos.html")){

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
Mensaje Sab Jun 16, 2007 7:35 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Responder citando

Perl:
if(open(sx1,">/home/mrson/Desktop/Material_Sidispol/SIDISPOL_ULTIMO_CON_IMAGENES/html/reporte_proveedores_todos.html")){

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.
Mensaje Sab Jun 16, 2007 1:19 pm
Emerson
Perlero Nuevo
Perlero Nuevo
Registrado: 16 Feb 2006
Mensajes: 32
explorer Responder citando

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

Perl:
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");

    }
}
Mensaje Sab Jun 16, 2007 7:28 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Responder citando

¿Qué es esto?
Perl:
open(sx1,-file=>"...")
Ese open() no lo conozco en Perl.

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

Perl:
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";

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.
Mensaje Lun Jun 18, 2007 7:26 pm
Perl user
Maestro Honorario
Maestro Honorario
Registrado: 03 Nov 2004
Mensajes: 385
Responder citando

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,
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group