OVH Cloud OVH Cloud

erreur, mais ou ?

4 réponses
Avatar
kurtz le pirate
bonjour,
bon là je comprends plus. voilà le script qui me pose problème :

-------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use GD::Graph::bars

# --- datas
my @thisDatas = (
["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
[ 1, 2, 5, 6, 3, 1.5, 1, 3, 4],
#[ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
);

# --- create new object $my_graph
my $my_graph = GD::Graph::bars->new(500, 400);

# --- set options of $my_graph
$my_graph->set(
x_label => 'X Label',
y_label => 'Y label',
title => 'Some simple graph',
y_max_value => 8,
y_tick_number => 8,
y_label_skip => 2
) or die $my_graph->error;

# --- build picture in $image
my $image = $my_graph->plot(\@thisDatas) or die $my_graph->error;

# --- save picture in png format
open(IMG, '>image.png') or die $!;
binmode IMG;
print IMG $image->png;
close IMG;
-------------------------------------------------------------------

la quasi totalité est tirée des exemples de GD::Graph. mais j'ai cette
erreur :
...Line 26: Global symbol "@thisDatas" requires explicit package name

et la ligne 26 :
my $image = $my_graph->plot(\@thisDatas) or die $my_graph->error;

on passe la référence du tableau '@thisDatas' à la méthode 'plot' de
l'objet 'my_graph'. pourquoi arrivé là, perl ne connait plus 'thisDatqs'

je comprends vraiment plus. les exemples trouvés ici et la sur le web
utilisent tous la même chose. dois-je changer de lunettes ?


--
klp

4 réponses

Avatar
jl_morel
Dans l'article ,
a dit...

bonjour,
bon là je comprends plus. voilà le script qui me pose problème :

-------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use GD::Graph::bars <-- il manque un point-virgule là !


C'est tout.

--
J-L.M.
http://www.bribes.org/perl

Avatar
kurtz le pirate
In article <4454de1f$0$12437$,
(Jean-Louis MOREL) wrote:

-------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use GD::Graph::bars <-- il manque un point-virgule là !


C'est tout.


arggg !!! oui, il faut que je change de lunette :)

... mais pourquoi perl ne le voit pas avant ?


merci !

--
klp


Avatar
jl_morel
Dans l'article ,
a dit...

In article <4454de1f$0$12437$,
(Jean-Louis MOREL) wrote:

-------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use GD::Graph::bars <-- il manque un point-virgule là !


C'est tout.


arggg !!! oui, il faut que je change de lunette :)

... mais pourquoi perl ne le voit pas avant ?


C'est que, sans le point virgule, l'instruction est encore valide. Manque
de chance !

D'après la doc

http://www.bribes.org/perl/docfr/perlfunc.html#LB9C6A253

l'instruction

use GD::Graph::bars
my @thisDatas = (
["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
[ 1, 2, 5, 6, 3, 1.5, 1, 3, 4],
[ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
);

est équivalente à

BEGIN {
require GD::Graph::bars;
import GD::Graph::bars my @thisDatas = (
["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
[ 1, 2, 5, 6, 3, 1.5, 1, 3, 4],
[ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
);
}

La fonction import reçoit bien une liste ( de quatre éléments: le nom du
module et 3 références à des tableaux). En fait, comme le module
GD::Graph::bars est orienté objet (rien n'est importé) la fonction import
n'existe pas et cette liste est ignorée (voir la doc).

Si le module avait eu une fonction import, il y aurait sans doute eu un
message d'erreur car les arguments qu'elle aurait reçus ne correspondaient
pas à des fonctions à importer.

Noter que le tableau @thisDatas est bien initialisé, mais comme il est
déclaré avec my, sa portée est limitée au bloc BEGIN; d'où l'erreur qui
apparaît à la ligne 26.

HTH

--
J-L.M.
http://www.bribes.org/perl



Avatar
kurtz le pirate
In article <445629b6$0$12443$,
(Jean-Louis MOREL) wrote:

C'est que, sans le point virgule, l'instruction est encore valide. Manque
de chance !
...


ben j'ai pas tout compris. merci :)


--
klp