La voix du secrétaire (Jean)Présents à la réunion :
$fido = new Camel "Fido";tandis que l'autre contient l'exemple :
$fido = new Camel "Amelia";Nous supposons donc qu'il s'agit du prénom du dromadaire figurant sur la couverture. Il y a d'autres différences sur la couverture. La phrase en exergue au sommet de Fido est programming, tandis qu'au sommet d'Amelia, c'est There's More Than One Way To Do It. Sur la tranche, Fido et Amelia regardent dans des directions opposées. Et finalement, la liste des auteurs de Fido comporte Randal Schwartz, tandis que celle d'Amelia annonce Jon Orwant.
foreach $toto (@toto) {...}J'estime que c'est plus lisible ainsi qu'avec deux noms différents.
grep { !$count{$_}++ } @tableauLe collègue de l'un des autres participants utilise pour cela un programme d'une cinquantaine de lignes. Comme quoi il est possible d'écrire des programmes Perl dans le style Visual BASIC.
my $re_ko = qr{ (\b\w+\b) # un mot, capturé dans $1 \W+ # blanc et ponctuation $1\b # MONUMENTALE ERREUR ! ce n'est pas la référence à $1 }x; while (<DATA>) { print "'$1' doublon dans $_" if /$re_ko/ } __DATA__ probleme imaginaire fausse faute erreur fausse mauvaise erreur une vraie vraie gouranceLe problème de ce programme, c'est que la regexp ne fonctionne pas comme Philippe s'y attendait, et imprime une erreur à chaque ligne. L'explication est que l'initialisation de $re_ok utilise la valeur courante de $1, c'est-à-dire dans ce cas, la valeur vide ou undef, et que c'est ce vide qui est utilisé à chaque itération. Si l'on utilise la variante suivante :
while (<DATA>) { print "'$1' doublon dans $_" if /(\b\w+\b) # un mot, capturé dans $1 \W+ # blanc et ponctuation $1\b/x; # MONUMENTALE ERREUR ! ce n'est pas la référence à $1 }alors le $1 utilisé est celui de l'itération précédente, et on obtient un fonctionnement rappelant "marabout, bout d'ficelle, selle de cheval". La solution consiste en fait à utiliser une véritable auto-référence, avec \1, ainsi :
my $re_ok = qr{ (\b\w+\b) # un mot, capturé dans $1 \W+ # blanc et ponctuation \1\b # bien ! une vraie référence arrière ! }x; while (<DATA>) { print "'$1' doublon dans $_" if /$re_ok/ }
$ a [ 0 ]
perldoc perlhist
),
Perl est passé de la version 3 à la version 4 uniquement parce
que le dromadaire fuchsia était sur le point de sortir, et cela faisait
plus sérieux de faire référence à la version 4.000.
i = i + 1
Quoique, avec la dernière version, il semble que cela change.
if a > b: print "oui" else: print "non"
Mon point de vue sur ce sujet : je trouve cette attitude regrettable, voire dangereuse. Prenons l'exemple des tris. Il y a une façon évidente de trier un tableau, c'est le tri à bulle. Avec cette attitude, tout le monde devrait utiliser le tri à bulle en O(n2), et Hoare, Knuth et consorts n'auraient jamais dû nous montrer comment faire un tri récursif, un tri-fusion ou un "tri dans le tas" (heap-sort) en O(n log n).
En allant plus loin, cette citation prône la pensée unique. Alors que des langages avec une syntaxe riche comme Perl, Forth ou APL encouragent la créativité, Tim Peters voudrait faire de Python une novlangue informatique. On élimine les synonymes, on appauvrit la syntaxe, le tout de façon étudiée et concertée, et par voie de conséquence les nuances et les subtilités disparaissent, le peuple apprend à ne plus penser. C'est beaucoup plus efficace que la censure avec ciseaux et Tipp-Ex et la répression, le peuple ne sait même pas qu'on lui cache quelque chose. Orwell en a rêvé (ou plutôt cauchemardé), Tim Peters l'a presque fait...