fonction avec table hash en parametre - Perl - Programmation
Marsh Posté le 30-03-2007 à 13:19:23
Apprendre les bases du perl parce que là c'est nawak
Ta syntaxe pour récupérer un tableau n'est déjà pas correcte dans la mesure tu ne récupères pas un tableau mais tous les arguments de ta fonction. Par exemple avec l'appel suivant:
Code :
|
a la récupération dans ta sub @montableau contiendra un tableau avec tous les éléments de @param1 et $param2 en dernier élément.
Quand on veut passer des tableaux/hash à une sub, sauf cas super particulier, on passe leur référence et on utilise celle-ci dans la fonction:
Code :
|
Encore une fois je pense qu'un peu de lecture de la doc/d'un bouquin ne serait pas du temps de perdu.
Marsh Posté le 30-03-2007 à 13:45:59
anapajari a écrit : Encore une fois je pense qu'un peu de lecture de la doc/d'un bouquin ne serait pas du temps de perdu. |
+1
Pour bosser via une fonction avec un hash qui lui est envoyé, comme toujours en Perl tu as plusieurs méthodes.
Soit une méthode simple sans références :
Code :
|
Soit par référence :
Code :
|
Généralement, j'utilise la seconde méthode, plus souple lorsque l'on souhaite bosser directement dans le hash pour le modifier via la fonction appelée. Et aussi, parce que bien plus pratique lorsque la fonction reçoit scalaires, listes, hash de hash et autres bricoles plus ou moins amusantes
Marsh Posté le 30-03-2007 à 13:48:26
anapajari a écrit : Apprendre les bases du perl parce que là c'est nawak |
Comme disait mon prof, y a certaines notions à savoir en Perl parmi lesquelles probablement la plus importante : connaître la notion de ce qu'est un scalaire, un tableau et un hachage.
Quand tu sais ça, c'est déjà pas mal
Marsh Posté le 30-03-2007 à 13:52:46
manque un my %pouet dans ta 1ere méthode
Aricoh a écrit : Comme disait mon prof, y a certaines notions à savoir en Perl parmi lesquelles probablement la plus importante : connaître la notion de ce qu'est un scalaire, un tableau et un hachage. |
je suis 200% d'accord mais je rajouterais les références, sinon tu te retrouves à pas faire la différence entre ces 3 écritures:
Code :
|
Marsh Posté le 30-03-2007 à 13:57:23
anapajari a écrit : manque un my %pouet dans ta 1ere méthode |
J'ai corrigé la boulette
anapajari a écrit : je suis 200% d'accord mais je rajouterais les références, sinon tu te retrouves à pas faire la différence entre ces 3 écritures:
|
Certes certes mais en disant mon truc, je pensais à la notion "B.A-baesque" en Perl. Il y a bien entendu d'autres notions à savoir mais que notre bonhomme n'aura pas le temps d'apprendre apparemment (au fait donny3, tu sais maintenant à quoi servent les fonctions print, close et open ou toujours pas ? )
Marsh Posté le 30-03-2007 à 15:49:16
les bases du perl je les connais Aricoh donc certaines reflexion vous pouvez les garder surtout le print;
ma question elle etait simple et j'ai eu la reponse c'etait cela
Citation : |
pas besoin d'un debat la dessus;
on est pas censer tout savoir comme toi lol
à bonne entendeur
aricoh et anapajri vous etes un peu en contradiction
y'en a un qui me dit c'est possible avec cela
Citation : my %pouet = @_; |
et l'autre qui me donne un exemple dans lequel il utilise cela
Marsh Posté le 30-03-2007 à 16:40:27
donny3 a écrit : les bases du perl je les connais Aricoh donc certaines reflexion vous pouvez |
C'était pas méchant hein, mais je pense que non ...
Et de toute façon au vu des questions que tu as posté dans la cat recemment, je vais encore insisté sur le fait qu'il te manque des bases pour comprendre ce que tu dois faire et pour le faire correctement et "proprement" ( même si en perl ça veut rien dire)
Perso, j'ai toujours sous la main:
Et bin tu y trouves 95% des réponses/solutions
Marsh Posté le 30-03-2007 à 16:42:28
ces deux bouquins y coutent une fortune
Citation : |
Marsh Posté le 30-03-2007 à 16:50:15
MAIS BIEN SUR !!!
Perl in A Nutshell: A Desktop Quick Reference (2nd Edition) (Paperback) 26$37
Advanced Perl Programming 26$37
Perl Cookbook 31$47
Marsh Posté le 30-03-2007 à 16:57:29
je l'ai fait comme cela et sa fonctionne
Code :
|
Marsh Posté le 30-03-2007 à 18:37:19
anapajari a écrit : C'était pas méchant hein, mais je pense que non ... |
C'était une boutade mais bon...
Et sinon Donny3, cette doc GRATUITE là, tu connais ? http://perl.enstimac.fr/DocFr.html
Marsh Posté le 02-04-2007 à 08:27:45
j'avais vu le site
mais pas fait attention à la doc
je crois que je vais faire un tour dans les boutique de livre d'occaz
et je vais m'en prendre un bien;
Marsh Posté le 02-04-2007 à 09:10:13
Si tu dois n'en prendre qu'un, je te conseille vraiment "Advanced Perl Programming".
Marsh Posté le 02-04-2007 à 13:22:27
merci du conseil
c'est ce bouquin http://www.unix.org.ua/orelly/perl/advprog/index.htm
?
Marsh Posté le 02-04-2007 à 13:23:43
donny3 a écrit : merci du conseil |
Oui
Marsh Posté le 03-04-2007 à 11:28:56
je viens de lire une doc sur les reference et en gros sa signifie que dans ma fonction j'utilise un tableau qui lui va pointé sur le vrai tableau;
Code :
|
en faite sa signifie que $hRef est le tableau qui va pointé sur %hash(tu créer une reference quand tu appel ton hash dans la fonction $hRef = \%hash;
;
en faisant cette boucle foreach my $key ( keys %$hRef){
tu dereference la reference donc $hRef et du coup cela va pointé sur %$hRef %hash et tu recupere les valeurs contenu dans %hash;
Marsh Posté le 03-04-2007 à 12:59:53
C'est ça en gros, sauf qu'une référence c'est un scalaire, pas un tableau.
Tu peux aussi faire (note bien les accolades à la place des parenthèses) :
my $hashref = {'A'=>'toto', 'B'=>'tata'}; |
Marsh Posté le 30-03-2007 à 12:40:08
salut,
Je souhaite faire une fonction qui prenne en parametre un tableau hash mais je ne sais pas comment le declarer dans ma fonction ??
je sais que je l'avais fait avec un array
et j'avais mis cela pour que ma fonction prennent en parametre le tableau
mais pour le hash cela ne fonctionne pas
j'ai essayer
marche pas non plus
Est ce que vous auriez des idée
Merci