Perl : Faire un package

Fermé
Ptesoleil Messages postés 27 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 27 août 2008 - 7 août 2008 à 17:16
Ptesoleil Messages postés 27 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 27 août 2008 - 8 août 2008 à 10:15
Bonjour,

Je voudrais faire un package Perl mais je sais pas comment le faire . J'ai cherché de la documentation mais je n'ai trouvé de réponses claires à mes questions.
Voilà je voudrais mettre plusieurs fonctions "sub" dans ce package et les appeler dans mon main par la suite.
Mais voilà je sais pas si je dois déclarer les variables de mes fonctions par "our" et comment je rapelle ces variables de fonctions dans le main.

Voilà ce que j'ai fait pour le moment :
#!/usr/bin/perl
package Condition;
use strict;
use warnings;
sub condition_2specie
{
    my ($line,$spec,$cond) = @_;
    if ($line =~ /^\s\#\d+\,\d+\#\s\d.*\s\{\w.*\}\s\s\(\#(\d+)\#\s(\w.+)\<\d.+\>\;\s\#(\d+)\#\s(\w.+\<\d.+\>\;\s\#(\d+)\#\s(\w.+)\<\d.+\>\)/)
    {
       if ($1 eq $spec)
       {
        	$cond=$2;
        	print FIL " - $cond";
        }
        if ($3 eq $spec)
        {
                $cond=$4;
                print FIL " - $cond";
        }
        if ($5 eq $spec)
        {
               $cond=$6;
                print FIL " - $cond";
        }
    }
    else 
    {
           $cond="No condition";
           print FIL " - $cond";
     }
}
1;

et dans le main :
use Condition;
..
Condition::condition_2specie ($linekmtn,$specie1,$condition); #Rappel de la fonction du package 

Quelqu'un pourrait-il m'aider à éclaircir le sujet?
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 août 2008 à 20:09
Salut,

voici un exemple
lami20j@debian:~/trash$ cat MonPackage.pm
package MonPackage;
use strict;
require Exporter;

our @ISA = qw/Exporter/;

our @EXPORT = qw/min2maj maj2min char2ascii ascii2char/;

sub min2maj{
  return uc(shift);
}

sub maj2min{
  return lc(shift);
}

sub char2ascii{
  return unpack("C*",shift);
}

sub ascii2char{
  return pack("C*",@_);
}

1;
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
#
use warnings;use strict;
use lib "/home/lami20j/trash";

use MonPackage;
my $chaine = "comment faire un module en perl?";

print min2maj($chaine),"\n";
print maj2min(min2maj($chaine)),"\n";
print char2ascii($chaine),"\n";
print ascii2char(char2ascii($chaine)),"\n";

__END__
lami20j@debian:~/trash$ perl ccm.pl
COMMENT FAIRE UN MODULE EN PERL?
comment faire un module en perl?
9911110910910111011632102971051141013211711032109111100117108101321011103211210111410863
comment faire un module en perl?
1
Ptesoleil Messages postés 27 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 27 août 2008
8 août 2008 à 10:15
Merci de m'avoir répondue.
Mais j'ai encore des questions : ma fonction doit elle obligatoirement retournée quelquechose ?
Si non, dois je déclarer mes arguments dans le rappel de ma fonctions dans le main?
et à quoi sert :
 our @ISA = qw/Exporter/;
0