Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Perl] - Faire un package

    11 août 2008 à 16:46:49

    Bonjour,
    Je voudrais faire un package Perl mais je sais pas comment le faire . J'ai cherché de la documentation mais je n'ai pas 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 comment je rapelle ces variables de fonctions dans le main, si ma fonction doit retourner obligatoirement quelquechose...

    Voici le code que j'ai commencé à faire avec pour le moment une seule fonction :

    #!/usr/bin/perl
    
    package Condition;
    use strict;
    require Exporter;
    
    our @ISA = qw/Exporter/;
    
    our @EXPORT = qw/condition_2specie/;
    
    sub condition_2specie
    {
            my ($line,$spec,$cond) = @_;
         
            #-------condition-------#
            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";
            }
    }
    1;
    


    dans le main :
    use strict;
    use warnings;
    Use Condition;
    ...  # code intermédiaire
    
    # Rappel de mon package
    Condition::condition_2specie ($specie1,$linekmtn,$condition); #($specie1,$linekmtn,$condition) : ces trois variables sont définies auparavant
    ... # suite du code
    


    Merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2008 à 14:50:37

      Tu ne sais pas te servir des regex..
      Tu n'as pas besoin d'échapper chaque caractère de la regex...
      Si tu veux matcher un espace, met le directement au lieu d'utiliser \s.
      \d.+ correspond à "un chiffre suivit d'au moins un caractère quelconque", ce qui n'est pas ce que tu veux je pense..

      Ensuite un exemple de package :
      package Foo;
      use strict;
      
      sub bar {
          my ($num) = @_;
          return 42*$num;
      }
      


      use strict;
      use Foo;
      
      print Foo::bar(1), "\n"; # affiche 42
      


      Tu peux utiliser Exporter (comme dans ton exemple) si tu veux exporter des symboles de ton package vers le main (pour ne plus avoir à mettre le "Foo::" devant chaque chose de ton package).

      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2008 à 10:41:45

        Merci pour toute ton aide.
        • Partager sur Facebook
        • Partager sur Twitter

        [Perl] - Faire un package

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown