J'ai une petite question, je suis tombé récemment sur une sub qui était définie :
sub xxx($$;@) { my ($x, $y, $z) = @_; … }
Je ne comprends pas la syntaxe utilisée "$$;@" ; quelqu'un pourrait me mettre sur une piste ?
Dans la 3e éd. en français de «Programmation en PERL» on parle de prototypes.
Il s'agit (extrait sec du susdit livre) de permettre de définir des sous-programmes qui fonctionnent comme les commandes internes.
exemples fournis
déclaré comme | appelé comme sub monlink($$) | monlink $ancien, $nouveau sub monreverse(@) | monreverse $a, $b, $c
(je sais que $$ correspond au PID, mais je vois pas l'intêret… pour info, c'est dans les sources d'ikiwiki…)
jeqça
-- Le TeXnicien de surface
espie
le point le plus important etant peut-etre que les prototypes ne fonctionnent pas du tout "comme" dans d'autres langages (ils ne verifient pas le type des parametres, ils forcent les parametres a avoir "le bon' type), ce qui occasionne souvent de grosses surprises.
(le 2e point etant que les prototypes ne marchent pas avec les methodes, ce qui les rend plus ou moins inutiles pour de la programmation recente avec du perl de base, e.g., sans Moose).
le point le plus important etant peut-etre que les prototypes ne fonctionnent
pas du tout "comme" dans d'autres langages (ils ne verifient pas le type
des parametres, ils forcent les parametres a avoir "le bon' type), ce qui
occasionne souvent de grosses surprises.
(le 2e point etant que les prototypes ne marchent pas avec les methodes, ce
qui les rend plus ou moins inutiles pour de la programmation recente avec
du perl de base, e.g., sans Moose).
le point le plus important etant peut-etre que les prototypes ne fonctionnent pas du tout "comme" dans d'autres langages (ils ne verifient pas le type des parametres, ils forcent les parametres a avoir "le bon' type), ce qui occasionne souvent de grosses surprises.
(le 2e point etant que les prototypes ne marchent pas avec les methodes, ce qui les rend plus ou moins inutiles pour de la programmation recente avec du perl de base, e.g., sans Moose).