Forum Programmation.perl Invoquer une fonction se situant dans une table de hashage déclaré dans un autre paquetage

Posté par  .
Étiquettes : aucune
0
3
oct.
2004
Comment invoque-t-on une fonction située dans une table de hashage déclarée dans un autre paquetage?
Le truc qui merde le moins, c'est :
$attaques::list->{$natt}->(\$lanceur,\$preneur);
sachant que
$attaques::list->{$natt}(\$lanceur,\$preneur); donne le même msg d'erreur.
list est bien délcaré avec our.
  • # beuh

    Posté par  (site web personnel) . Évalué à 2.

    ce serait un poil mieux que tu postes ton code pour qu'on puisse voir et tester le problème !

    avec mon code suivant les deux appels marchent.

    -=-=---=-=---=-=---=-=---=-=---=-=--
    use attaques;

    my $natt = 'foo';

    print "appel1\n";
    $attaques::list->{$natt}->(\$lanceur,\$preneur);

    print "appel2\n";
    $attaques::list->{$natt}(\$lanceur,\$preneur);
    -=-=---=-=---=-=---=-=---=-=---=-=--

    -=-=---=-=---=-=---=-=---=-=---=-=--
    package attaques;

    our $list = { foo => sub { print "in foo, params: @_\n" } };
    -=-=---=-=---=-=---=-=---=-=---=-=--

    si tu ne peux/souhaites par utiliser de fonction anonyme dans le package, tu peux faire :

    -=-=---=-=---=-=---=-=---=-=---=-=--
    package attaques;

    sub fooimpl {
    &nsp;&nsp;&nsp;&nsp;print "in foo, params: @_\n";
    }

    our $list = { foo => \&fooimpl };
    -=-=---=-=---=-=---=-=---=-=---=-=--
    • [^] # Re: beuh

      Posté par  (site web personnel) . Évalué à 2.

      rah /me sux

      -=-=---=-=---=-=---=-=---=-=---=-=--
      package attaques;

      sub fooimpl {
          print "in foo, params: @_\n";
      }

      our $list = { foo => \&fooimpl };
      -=-=---=-=---=-=---=-=---=-=---=-=--

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.