[PERL] Problème passage de variable pour déssiner un diagram
Bonjour à tous !
J'ai un souci avec un passage de variable:
J'ai:
* un script cgi dans lequel je vais avoir du texte et des graphes.
* un script cgi qui me permet d'insérer le graph
* un module perl qui dessine le graphe
Voilà une partie du 1er cgi (la page mère):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#!c:\perl\bin\perl.exe
print "Content-type:text/html\n\n";
...
.....du texte ... etc ...
.......
@pie0=('1','2','3','4');
@pie1=('10','20','30','40');
@pie=(\@pie0,\@pie1);
print "<img src='./graph.pl?DATA=".\@pie.">\n";
print "</body></html>\n"; |
L'image appelle un cgi nommé graph.pl, le voici:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#!c:\perl\bin\perl.exe
use CGI;
use TX2::Graph::Graph;
$cgi=new CGI;
$tab=$cgi->param('DATA');
$tab0=$tab->[0];
$tab1=$tab->[1];
open(fic,'>./fic.txt');
print fic "DEBUG: ".@{$tab0}->[0];
close(fic);
&TX2::Graph::Graph::PlotGraph($tab); |
Et enfin la fonction &TX2::Graph::Graph::PlotGraph() vient du module TX2::graph:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#!c:\perl\bin\perl
package TX2::Graph::Graph;
#%% Simple Pie chart | WWW | CGI, GD::Graph::pie
#______________________________________________
use CGI qw/:standard/;
use GD::Graph::pie;
#use strict;
# Call it like this : <img src = 'piechart.cgi?x=200&y=100'>
sub PlotGraph()
{
my $donnee=$_[0];
my @DataText=$donnee->[0];
my @DataValue=$donnee->[1];
print "DONNEE ".$donnee->[0];
my $xs = param('x');
my $ys = param ('y');
do {$xs = 200; $ys = 100} unless $xs;
print "Content-type: image/gif \n\n";
# For simple chart you can pass these in param string
# for complex charts use data file
my @data = (@DataText,@DataValue);
my $graph = GD::Graph::pie->new($xs, $ys);
$graph->set(
title => 'Analysis',
y_max_value => 100
);
my $gd = $graph->plot(\@data);
binmode STDOUT;
print $graph->plot(\@data)->gif();
}
-1; |
Or à l'affichage, j'ai une une croix symbolisant un gif non toruvé (rien de chargé) et l'erreur suivante ressortant d'apache:
Code:
1 2
|
[error] [client 127.0.0.1] Can't call method "gif" on an undefined value at c:/Perl/lib/TX2/Graph/Graph.pm line 38.\n |
ça vient du fait probablement que mes variables ne sont pas bien passées.
les valeurs qui me permettent d'afficher le graphes sont dans un tableau de 2 tableau @pie. Je passe ensuite la référence de ce tableau au cgi graph.pl puis appelle la fonction PlotGraph avec cette référence en paramètre.
Qu'est ce qui ne va pas ? Quelle erreur je fais pour ne pas retrouver mes tableaux ????
Merci beaucoup pour votre aide !!
Et bonne journée