Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1244 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  passer un tableau en parametre dans un sub?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passer un tableau en parametre dans un sub?

n°1474664
donny3
Posté le 13-11-2006 à 15:22:11  profilanswer
 

salut,
 
J'aurai savoir si quelqu'un serait comment faire pour passer un tableau hash en parametre dans une sub routine ??
j'ai essayer : %tab = @_ mais se ne fonctionne pas.
 
ex :
sub test {
var1 = shift;
ici je veux appeler un tableau hash
...
}
 
 
Merci.

mood
Publicité
Posté le 13-11-2006 à 15:22:11  profilanswer
 

n°1474685
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-11-2006 à 15:47:42  profilanswer
 

il faut que tu passes une référence sur ta hash!

Code :
  1. my %hash = ('A'=>1, 'B'=>2, 'C'=>3);
  2. ...
  3. test(\\%hash);
  4. ...
  5. sub test {
  6.   my $var1 = shift;
  7.   ...
  8. }


Attention quand tu as une reference sur un hash tu accèdes a tes élements différement:

Code :
  1. my $hashRef = {'A'=>1,'B'=>2,'C'=>3};
  2. #1ere façon pour l'element 1:
  3. print $hashRef->{'A'};
  4. #2eme façon
  5. print $$hashRef{'A'};


edit: c#n de forum qui bouffe les slashs :o


Message édité par anapajari le 13-11-2006 à 15:48:10
n°1474689
donny3
Posté le 13-11-2006 à 15:56:55  profilanswer
 

et dans ma fonction sub
je declare comment mon hash ???
 
comment je lui dit que je vais le passer en parametre ?
pour var1 j'utilise shift et pour mon hash ?

n°1474693
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-11-2006 à 16:06:05  profilanswer
 

bin var1 c'est le premier paramètre que tu passes à ta fonction en l'occurence une référence sur ta hash [:w3c compliant]
C'est bien pour ça qu'ensuite je t'ai donné les deux lignes qui expliquent comment se servir d'une ref.
 
Bon aller un exemple qui ajoute 4 à toutes les valeurs d'une hash:

Code :
  1. use Data::Dumper;
  2. use strict;
  3. my %hash = ('A'=>1, 'B'=>2, 'C'=>3);
  4. add(4,\\%hash);
  5. print Dumper \\%hash;
  6. sub add {
  7.   my $inc = shift;
  8.   my $hr = shift;
  9.   foreach my $key ( keys %$hr){
  10.     $hr->{$key} += $inc;
  11.   }
  12. }


edit: grrr de \


Message édité par anapajari le 13-11-2006 à 16:07:14
n°1474702
donny3
Posté le 13-11-2006 à 16:16:33  profilanswer
 

ok
j'ai fait la meme chose
 
mais il bloque à cette ligne, il me dit que j'ai une erreur de synthaxe

Citation :

if ( exists %$monhash{$nom} ) {

n°1474711
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-11-2006 à 16:26:48  profilanswer
 

je te conseille de (re)lire mon premier post où je t'explique comment acceder à un element d'une reference de hash.

n°1474993
matafan
Posté le 14-11-2006 à 00:29:18  profilanswer
 

donny3, ta syntaxe marche aussi mais faut des parentheses autour de %$monhash. Mais bon la bonne facon de faire c'est $monhash->{$nom} comme anapajari a dit.

n°1475030
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-11-2006 à 10:02:26  profilanswer
 

matafan a écrit :

donny3, ta syntaxe marche aussi mais faut des parentheses autour de %$monhash. Mais bon la bonne facon de faire c'est $monhash->{$nom} comme anapajari a dit.


Euhh nan hein ( enfin j'ai jamais vu, ptêt que je me trompe mais j'y crois pas trop).
%$ c'est pour déréférencer ta hash entière, tu peux pas accèder à un element comme ça même en rajoutant des parenthèses.
La syntaxe qui se rapproche le plus de ce que tu dis ça serait:

Code :
  1. ${%$hashRef}{'cle'};


Mais perso je la trouve particulierement incompréhensible.

n°1475251
matafan
Posté le 14-11-2006 à 15:14:34  profilanswer
 

Heu oui faux un $ en plus tu as raison.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  passer un tableau en parametre dans un sub?

 

Sujets relatifs
Ecrire le rang dun tableau dont la valeur est dans un autre tableau .[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockée
Passer l'adresse d'un tableau en parametre[c] Passer l'adresse d'un tableau a 2 dim en parametre [OK]
passer un tableau d'entier en parametre dans une URL [resolu][VBA] Passer un tableau en parametre de fonction ?
passer un tableau de type à 2 dimensions en paramètre ? comment faire[PHP]Passer un tableau en parametre à l'URL
[HTML] Passer 1 tableau en parametre d'une page vers une autre ...[SQL server] Passer un tableau en parametre d'une procédure stocké?
Plus de sujets relatifs à : passer un tableau en parametre dans un sub?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR