Je fais partie des gens qui apprécient Perl /aussi/ pour sa tolérance à
la suppression des parenthèses inutiles (ouf!). Mais j'ai été surpris en
exécutant ceci (recopié à peu près tel quel du "Spécial Perl" de Linux
Magazine :
oui, c'est normal. tu mets une liste dans un scalaire. Donc perl il a écrire dans $n la taille de @_, à savoir 1.
C'est admissible, mais çà ne fait pas du tout ce que tu souhaitais.
Donc ton programme ne marche pas. Perl il est sympa mais faut pas pousser trop loin non plus :)
jf
FDA
Jean-Francois PARIS wrote:
si je remplace :
{ my ($n) = @_;
par (et ça me semblait admissible) :
{ my $n = @_;
oui, c'est normal. tu mets une liste dans un scalaire. Donc perl il a écrire dans $n la taille de @_, à savoir 1.
C'est admissible, mais çà ne fait pas du tout ce que tu souhaitais.
Pigé ! Donc : "my $n = $_[0]"; ça va comme ça ? :)
(en APL, ça se dit "1 take", et c'est tout de même plus lisible...)
Je m'aperçois au passage que les parenthèses derrière le "my" ont quelque chose d'ambigu dans cette affaire : factorisation du "my" pour une éventuelle liste de noms et/ou déclaration de liste de noms en affectande d'une liste de valeurs. Ca explique que j'aie été surpris :D
Jean-Francois PARIS wrote:
si je remplace :
{ my ($n) = @_;
par (et ça me semblait admissible) :
{ my $n = @_;
oui, c'est normal. tu mets une liste dans un scalaire. Donc perl il a
écrire dans $n la taille de @_, à savoir 1.
C'est admissible, mais çà ne fait pas du tout ce que tu souhaitais.
Pigé ! Donc : "my $n = $_[0]"; ça va comme ça ? :)
(en APL, ça se dit "1 take", et c'est tout de même plus lisible...)
Je m'aperçois au passage que les parenthèses derrière le "my" ont
quelque chose d'ambigu dans cette affaire : factorisation du "my" pour
une éventuelle liste de noms et/ou déclaration de liste de noms en
affectande d'une liste de valeurs. Ca explique que j'aie été surpris :D
oui, c'est normal. tu mets une liste dans un scalaire. Donc perl il a écrire dans $n la taille de @_, à savoir 1.
C'est admissible, mais çà ne fait pas du tout ce que tu souhaitais.
Pigé ! Donc : "my $n = $_[0]"; ça va comme ça ? :)
(en APL, ça se dit "1 take", et c'est tout de même plus lisible...)
Je m'aperçois au passage que les parenthèses derrière le "my" ont quelque chose d'ambigu dans cette affaire : factorisation du "my" pour une éventuelle liste de noms et/ou déclaration de liste de noms en affectande d'une liste de valeurs. Ca explique que j'aie été surpris :D
Paul GABORIT
À (at) Tue, 20 Apr 2004 01:40:26 +0200, FDA écrivait (wrote):
Pigé ! Donc : "my $n = $_[0]"; ça va comme ça ? :)
(en APL, ça se dit "1 take", et c'est tout de même plus lisible...)
On peut aussi dire :
my $n = shift;
Et c'est aussi "lisible" qu'en APL ;-)
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Tue, 20 Apr 2004 01:40:26 +0200,
FDA <armingaud@noos.fr> écrivait (wrote):
Pigé ! Donc : "my $n = $_[0]"; ça va comme ça ? :)
(en APL, ça se dit "1 take", et c'est tout de même plus lisible...)
On peut aussi dire :
my $n = shift;
Et c'est aussi "lisible" qu'en APL ;-)
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>