Bienvenido a los foros de Perl en Español, Ricsato.
El
tutorial hace referencia a la creación y presentación del gráfico, pero en entorno web.
Me explico: el programa debe ser ejecutado desde un servidor web por petición de un usuario, a través del uso de un navegador web. Se ve esto porque el programa incorpora el módulo CGI.
Si tuvieras que imitar este proceso en tu propio ordenador, deberías tener instalado un servidor web, meter el programa en una carpeta especial, arrancar un navegador web, y escribir una dirección especial en la barra de direcciones.
El navegador web mandará tu petición al servidor web, que arrancará tu programa, que generará el gráfico, y que el servidor web lo mandará a tu navegador, y éste, al fin, será el que te presente el gráfico.
Bueno, un camino muy largo para ver un gráfico, pero así es como funciona esto de Internet
Pero... si sólo quieres que el programa genere un gráfico, y que lo guarde en disco, para luego verlo con cualquier visor de gráficos, te vale con hacer unas pequeñas modificaciones al programa: quitar el módulo CGI y sustituir la línea de print() del "Content..." por una instrucción
binmode STDOUT;El resultado será el gráfico, en formato png, que saldrá directamente en pantalla, pero también, como dices, en forma de basura. No es basura: lo que estás viendo son los datos binarios que forman el fichero del gráfico.
Lo que debes hacer es "capturar" ese flujo binario y guardarlo en disco:
perl programa_grafico.pl > dibujo.pngdesde la línea de comandos. Fíjate que le estamos diciendo que toda la salida del programa la guarde en un fichero llamado dibujo.png. Luego queda que ese gráfico lo veas con el navegador de ficheros de tu sistema gráfico o con un programa de dibujo o incluso el mismo navegador web.
Si no quieres hacer esa captura desde la línea de comandos, también puedes guardar el gráfico desde el mismo programa (sacado de
http://cpansearch.perl.org/src/BWARFIELD/GDGraph-1.44/samples/save.pl), cambiando las últimas líneas del programa por:
Using perl Syntax Highlighting
open(OUT
, ">dibujo.png") or die "No puedo escribir en dibujo.png: $!";
binmode OUT
;
print OUT
$imagen->png;
close OUT
;Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
que ves que hacemos los pasos: abrir fichero "dibujo.png" en escritura, indicar que la salida será en binario puro, imprimimos el gráfico en el fichero, y cerramos la grabación. El resultado debería ser el mismo: un fichero en tu directorio con ese nombre, que podrás ver de la forma indicada antes.