Pages : 1
#1 Le 01/11/2006, à 14:17
- Priscour
[PERL]Utilisation des modules
Salut,
pour m'entrainer, j'ai voulu créer un module et l'utiliser.
Voici le fichier MonModule.pm
package MonModule;
use strict;
sub TableMult{
my($n) = @_;
for my $i(1..$n){
for my $j(1..$n){
printf("%5d",$i*$j);
}
printf("\n");
}
1;
et le fichier Exo.pl
#!/usr/bin/perl -w
use strict;
use MonModule;
MonModule::TableMult(4);
A la compilation, j'ai ce message :
~$ ./Exo.pl
Missing right curly or square bracket at MonModule.pm line 14, at end of line
syntax error at MonModule.pm line 14, at EOF
Compilation failed in require at ./Exo.pl line 3.
BEGIN failed--compilation aborted at ./Exo.pl line 3.
#2 Le 01/11/2006, à 14:49
- foobar2000
Re : [PERL]Utilisation des modules
A priori c'est a cause de tes accolades mal equilibrees. 3 ouvrantes, 2 fermantes.
Aucun rapport avec le logiciel du même nom.
Hors ligne
#3 Le 01/11/2006, à 15:29
- PrisCours
Re : [PERL]Utilisation des modules
A priori c'est a cause de tes accolades mal equilibrees. 3 ouvrantes, 2 fermantes.
Merci ...
Maitenant, j'ai un autre souci :
~$ ./Exo.pl
Unquoted string "disque" may clash with future reserved word at ./Exo.pl line 15.
$VAR1 = bless( {
'RAYON' => 1,
'X' => 0,
'Y' => 0
}, 'Disque' );
$VAR1 = bless( {
'RAYON' => 1,
'X' => 1,
'Y' => 2
}, 'Disque' );
Can't locate object method "surface" via package "disque" (perhaps you forgot to load "disque"?) at ./Exo.pl line 15.
Voici mes 2 fichiers :
Disque.pm
package Disque;
use strict;
use Math::Trig;
sub new{
my($class,$x,$y,$rayon) = @_;
my $this = {};
bless($this,$class);
$this->{X} = $x;
$this->{Y} = $y;
$this->{RAYON} = $rayon;
if(!defined($x)){$this->{X} = 0;}
if(!defined($y)){$this->{Y} = 0;}
if(!defined($rayon)){$this->{RAYON} = 1;}
return $this;
}
sub deplace{
my($this,$dx,$dy) = @_;
$this->{X} += $dx;
$this->{Y} += $dy;
}
sub toString{
my($this) = @_;
my $chaine = "Disque:";
$chaine .= '('.$this->{X}.','.$this->{Y}.')'.$this->{RAYON};
return $chaine;
}
sub surface{
my($this) = @_;
return pi*$this->{RAYON}**2;
}
1;
et Exo.pl
#!/usr/bin/perl -w
use strict;
use Disque;
use Data::Dumper;
my $disque;
my $chaine;
$disque = Disque->new();
print Dumper($disque);
$disque->deplace(1,2);
print Dumper($disque);
#$chaine = disque->toString();
#print $chaine."\n";
print disque->surface()."\n";
#4 Le 02/11/2006, à 21:51
- JoelS
Re : [PERL]Utilisation des modules
Tu as oublié li sigil $ avant la chaîne disque dans la dernière ligne; ça doit être normalement :
print $disque->surface()."\n";
Hors ligne
Pages : 1