(Courriels de diversion: <vignobles@divulguee-calfeutres.com> <postsynchronise@relancez-resignions.com> <lubrifiions@aurions-admettra.com> <enterinee@situeras-decrocherez.com> <complote@retrousses-alternant.com> <trancherez@signataires-lustrerai.com> <pavoisons@croiseras-connectee.com> <redingotes@decernais-discredits.com> <corniches@mesquineries-demoulent.com> <floue@pretendrais-regionaliserait.com> )


>>>>> "dc" == David Carre (r6552c) <r6552c@email.sps.mot.com> writes:
  dc> S'il y a des des adeptes du PERL voici ma question :
  dc> Je souhaiterais passer en parametre d'une fonction function_tata
  dc> plusieurs arguments (dont plusieurs tableaux) comme suit :

Dans la série O'Reilly sur Perl, il y a un premier livre pour
débutants, qui explique comment utiliser les expressions régulières,
les boucles, etc. Puis lorsque le programmeur veut un peu structurer
ses programmes, il peut lire les 500 pages du livre "Programmation
Perl", qui explique comment faire des fonctions, utiliser les tables
de hachage, présente les fonctions standard de Perl. Mais pour savoir
comment fonctionne le passage de paramètres à une fonction, les
références et les file handles, il faut lire le livre "Perl avancé"
(on a tous ces trois livres à l'association, me semble t'il).

La vraie solution serait d'utiliser un langage propre et bien foutu à
la base, comme Python <URL:http://www.python.org/> ou Scheme
<URL:http://www.schemers.org/>. Si tu persistes, voilà comment faire:

   $first  = "chaine";
   @second = ( "a", "b" );
   %third  = ( "a" => "aa", "b" => "bb" );

   sub trucMiChouette {
      my($first, $second, $third) = @_;
   
      print $first, $$second[0], $$third{'a'};
   }
      
   &trucMiChouette($first, \@second, \%third);


Dans un contexte liste tel que celui des parenthèses d'appel de ta
fonction, Perl concatène les tableaux, donc tu trouvais le contenu de
@third dans @second. Pour passer des tableaux ou des hachages
correctement, il faut les passer par référence (ah, tu pensais éviter
les merdes des pointeurs en utilisant un langage de haut niveau: ben
non). Dans la fonction tu récupères une référence, que tu
dois déréférencer pour accéder au tableau, càd $@second ou $%third.
Puis, avec cette beauté propré à Perl, les premiers éléments de ces
structures de données sont $$second[0] et $$third{'a'}.

Et dire que des gens m'ont dit que l'exposé sur Scheme était
compliqué!
  
-- 
Nail [X] here for new monitor

 _______________________________________________________________________
  Le CULTe sur le ouebe: http://savage.iut-blagnac.fr/