Newsgroup: it.comp.lang.perl
Titolo: GD::Graph::lines problema metodo gif

ho editato ed eseguito come da esempi su cpan il seguente semplice codice:
#!/usr/bin/perl -w
use GD::Graph::lines;
my $graph = GD::Graph::lines->new(650,400);
@data = (
	["1st","2nd","3rd","4th","5th","6th","7th","8th","9th"],
	[1,2,5,6,3,1.5,1,3,4]);
 
$graph->set(
	x_label => 'hour (h)',
	y_label => 'column height m.s.l. (m)',
	title => "simulation ",
	x_label_skip => 2,
	y_min_value => 0
	) or die $graph->error;
 
my $gd = $graph->plot(\@data) or die $graph ->error;
open(PICTURE,">/root/creafilemafalda/redoubt/prova.gif") or die("impossibile
aprire .gif in scrittura");
binmode PICTURE;
print PICTURE $gd ->gif;
close PICTURE;
ma quando vado ad eseguirlo mi visualizza il seguente errore:
[]# ./provagrafico
Can't locate object method "gif" via package "GD::Image" at ./provagrafico
line 23.
]#
quale può essere il problema?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 quale può essere il problema?
libgd non è stata compilata con il supporto per il formato gif, e/o hai 
una versione vecchia di GD (CPAN).
Per vedere se libgd ha il supporto per il formato gif, esegui:
gdlib-config --features
e verifica che in output ci sia: GD_GIF
Nota: se sei su debian (ricordo che eri su Linux, ma non so quale 
distro) gdlib-config viene installata da uno dei package libgd2*-dev.
Se non hai il supporto per le gif, aggiorna entrambe libgd e la 
distribuzione CPAN GD; se ce l'hai, aggiorna (o ricompila, se è già 
l'ultima) soltanto la seconda.
Ad ogni buon conto:
print PICTURE $gd->png;
è comunque preferibile ;-)
Ciao.

Grazie Emanuele per la risposta,
Ho una Centos 4.2 e l'output del comando gdlib-config --features
mi visualizza l'output GD_GIF.
Ho provato anche con png, ma mi dà il solito errore:
Can't locate object method "png" via package "GD::Image" at ./provagrafico
line 23.
:-(
Il 20 Apr 2009, 18:01, Emanuele Zeppieri
<ema...@tiscali.itsnip_here.invalid> ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ho trovato un rimedio,modificando lo script come segue riesco a produrre
l'immagine del grafico di esempio:
#!/usr/bin/perl -w
use GD::Graph::lines;
my $graph = GD::Graph::lines->new(650,400);
@data = (
	["1st","2nd","3rd","4th","5th","6th","7th","8th","9th"],
	[1,2,5,6,3,1.5,1,3,4]);
 
$graph->set(
	x_label => 'hour (h)',
	y_label => 'column height m.s.l. (m)',
	title => "simulation ",
	x_label_skip => 2,
	y_min_value => 0
	) or die $graph->error;
 
#my $gd = $graph->plot(\@data) or die $graph ->error;
my $format = $graph -> export_format;
open(PICTURE,">/root/creafilemafalda/redoubt/prova.$format") or
die("impossibile creare immagine");
binmode PICTURE;
#print PICTURE $gd ->png;
print PICTURE $graph->plot(\@data) ->$format();
close PICTURE;
di fatto non chiedo di esportare in un preciso formato, me lo faccio dare da
lui che mi crea un file con estensione .jpeg


Luca wrote:

Bravo, però bisogna capire perché funziona ;-)
In realtà stai facendo la stessa identica cosa di prima, perché 
GD::Graph dietro le quinte utilizza GD::Image, esattamente come facevi 
tu nel codice precedente /a mano/.
Ti funziona semplicemente perché stavolta stai utilizzando il formato 
jpeg anziché gif o png (che non sono supportati dalla tua distribuzione GD).
Quindi potresti fare esattamente come facevi prima, utilizzando però il 
formato jpeg:
print PICTURE $gd->jpeg;
e funzionerebbe ugualmente.
---
Il problema è invece che la tua distribuzione CPAN GD non supporta né il 
gif né il png! (Tra l'altro il jpeg è il formato meno adatto per i 
grafici e le immagini line-art in generale).
Per risolvere questo problema, dovevi passare al piano B che ti avevo 
detto ;-)
Ovvero (re)installare la distribuzione CPAN GD, prima mediante il 
pacchetto rpm* e poi, se ancora non andava, a manella mediante cpan.
Quindi in realtà i piani sono due.
Ma ce ne sarebbe anche un terzo: buttare CentOS ;-)
(*)
Il pacchetto rpm si chiama perl-GD.
In questo repository c'è il 2.35:
http://dag.wieers.com/rpm/packages/perl-GD/
ma non è l'ultimo disponibile su CPAN (2.41).
Non ho idea se da qualche parte ci siano rpm di più recenti.