Página 1 de 1

Impresión innecesaria de hash

NotaPublicado: 2014-08-01 11:20 @514
por sarriaga
Hola, ¿qué tal, compañeros perleros? Tengo un problema con uno de mis módulos que genera etiquetas con barcode, pero al hacer un return de un hash me lo imprime en el navegador y no quiero que aparezca.

Este método del módulo hace bien la función que necesito:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package Modulo_arts;
  2.  
  3. sub exportar_valores {
  4.     my ($self, $dbh) = ( shift, &$connect );
  5.  
  6.     my $numero      = ( $dbh->selectall_arrayref("SELECT * FROM TABLA1") );
  7.     my $nombre      = ( $dbh->selectall_arrayref("SELECT NOMBRE FROM TABLA2 WHERE ID=$numero->[0]->[0]-1") );
  8.     my $timestamp   = &$get_now;
  9.     my $opciones    = $q->param('opciones ');
  10.     my $descripcion = $q->param('DESCRIPCION');
  11.     my %valores_parametros;
  12.     $valores_parametros{opciones} = $opciones;
  13.     $valores_parametros{nombre}   = $nombre->[0]->[0];
  14.     $valores_parametros{numero}   = $numero->[0]->[0] - 1;
  15.     %valores_parametros;                                    # este es un return de los valores
  16. }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


En este código es donde importo el hash, que al ejecutar el script, el hash me lo imprime en pantalla, y no lo necesito.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Modulo_arts;
  2. use LWP::Simple;
  3.  
  4. my $cgi                = CGI->new;
  5. my $arts               = Modulo_arts->new;
  6. my %valores_parametros = $art->exportar_valores;
  7. my $opciones           = $valores_parametros{opciones};
  8. my $nombre             = $valores_parametros{nombre};
  9. my $consecutivo        = $valores_parametros{numero};
  10. my $impresora          = 'impresora_chica';
  11. my $numero_copias      = 3;
  12.  
  13. my $parametros                = "nombre=$nombre&opciones=$opciones&numero=$numero";
  14. my $path                      = 'http://' . $server . '/cgi-bin/scripts/generator_etiq.pl';
  15. my $address->{etiquetaNombre} = "$path?$parametros";
  16. my $etiqueta_nombres          = get( $address->{etiquetaNombre} );
  17.  
  18. for ( my $con = 0; $con < $numero_copias; $con++ ) {
  19.     open( CMD, "| lpr -P $impresora-o portrait -o fit-to-page -o media=Custom.3x1.5in" );
  20.     print CMD $etiqueta_nombres;
  21.     close CMD;
  22. }
  23. }
  24.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Espero puedan ayudarme, quedo en espera de sus comentarios.
Saludos

Re: Impresión innecesaria de hash

NotaPublicado: 2014-08-01 12:24 @558
por explorer
En principio, no veo dónde puede estar el error.

Veo las siguientes cosas raras:
  • en el programa, a la hora de llamar a exportar_valores(), lo haces sobre el objeto $art, pero en el código lo llamaste $arts. Si te funciona, es una prueba de que no se trata de un método de un objeto, sino de una función de clase
  • sobra una llave al final
No veo nada más... o está muy oculto.

Deberás encontrar la línea que provoca la salida a pantalla.

Re: Impresión innecesaria de hash

NotaPublicado: 2014-08-04 11:14 @509
por sarriaga
Así es, al llamar exportar_valores() sí es $arts, fue error de dedo :? y la línea donde envío los datos en el método es solo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. %valores_parametros; # este es un return de los valores
  2.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


O no sé si en el código, en el print CMD $etiqueta_nombres; haga la impresión de etiqueta y al mismo tiempo los valores.