La voix du secrétaire (Jean)
Présents à la réunion :
Il a été un peu question de Perl et de sujets connexes. Nous avons également parlé d'Internet, d'informatique et de sujets divers.
#/usr/bin/perl -l -0n #/usr/bin/perl -0n -lentraînent un comportement différent du programme. Dans les deux cas, $/ (ou $RS, ou $INPUT_RECORD_SEPARATOR) est le caractère ASCII correspondant au nombre octal n. Mais dans le premier cas, $\ (ou $ORS, ou $OUTPUT-RECORD-SEPARATOR) correspond à la valeur avant modification de $/, soit 10, tandis que dans le deuxième cas, $/ a déjà été modifiée, donc $/ et $\ ont la même valeur.
system("perl -e'blablabla'")(pour des valeurs adéquates de blablabla).
my %pays = ( GT => "toto", LE => "titi");Nicolas a essayé et a constaté un phénomène curieux. Avec des doubles quotes, cela fonctionne, mais avec des simples quotes, de façon surprenante, l'avertissement réapparaît. En fait, Rafael était en train de réfléchir à ce problème chez lui et a envoyé le résultat de ses cogitations sur la liste :
Nicolas Chuche wrote: > Bin oui mais chez moi les simples quotes ne marchent pas : > > % perl -we 'my %a = ( GT => "gt" );' > Use of GT is deprecated at -e line 1. > % perl -we 'my %a = ( 'GT' => "gt" );' > Use of GT is deprecated at -e line 1. > % perl -we 'my %a = ( "GT" => "gt" );' > Ton shell te joue des tours ;- regarde mieux la deuxième ligne de commande -- que voit le shell ?La réponse de Nicolas :
AAAAAARRRRRGH !!!
use threads; use threads::shared; my $foo : shared = 1; my $bar = 1; threads->new(sub { $foo++; $bar++ })->join; print "$foo\n"; #prints 2 since $foo is shared print "$bar\n"; #prints 1 since $bar is not shared(Je n'ai pas vérifié, mon Perl 5.8.0 ne dispose pas des threads.)
motcle=valeur
*Pamela = vert_pommereprésente le fait que Pamela a décidé de repeindre sa salle de séjour en vert pomme. Ou bien,
Bobby = Pamelasignifie que Bobby emménage chez Pamela. À ne pas confondre avec
*Sue_Ellen = *Pamelaqui représente le fait que Sue-Ellen a redécoré sa propre salle de séjour et que pour ce faire elle a récupéré les pots de peinture et les rouleaux de papier que Pamela n'a pas utilisés. Avec cette métaphore, on comprend ce qui se passe si quelques semaines plus tard,
*Pamela = jaune_citron print *Bobby print *Sue_EllenCela représente le fait que si Pamela décide encore une fois de changer la décoration, alors Bobby aura une salle de séjour en jaune citron tandis que Sue-Ellen continuera à avoir une salle de séjour en vert. J'avais l'intention d'écrire cet article il y a très longtemps. Puis j'ai découvert Perl, j'ai constaté qu'en Perl l'utilisation principale des références est de permettre l'imbrication de structures de données et que le mécanisme d'alias ou d'indirection est plutôt l'affaire des typeglobs. Et pour répondre à Isabelle qui portait un T-shirt Dynasty, si j'ai utilisé les personnages de Dallas, c'est parce que c'est l'archétype du feuilleton américain ayant pour thème la vie des différents membres d'une famille [ Il y a d'autres feuilletons archétypaux, Star Trek, Starsky et Hutch, X-Files, Urgences, mais leur thème est différent. ]
Fichier First fit Best fit disque 1 - disque 2 disque 1 - disque 2 100 - 100 100 - 100 60 60+40 - 100 60+40 - 100 70 60+40 - 70+30 60+40 - 70+30 30 60+30+10 - 70+30 60+40 - 70+30+0 40 planté ! 60+40+0 - 70+30+0Beaucoup moins intuitivement, il y a des situations où le first fit réussira et où le best fit échouera. Si l'on doit copier des fichiers de 60, 70, 20, 30 et 20 Mo, on a :
Fichier First fit Best fit disque 1 - disque 2 disque 1 - disque 2 100 - 100 100 - 100 60 60+40 - 100 60+40 - 100 70 60+40 - 70+30 60+40 - 70+30 20 60+20+20 - 70+30 60+40 - 70+20+10 30 60+20+20 - 70+30+0 60+30+10 - 70+20+10 20 60+20+20+0 - 70+30+0 planté !Stéphane signale que, paradoxalement et statistiquement, le first fit réussit plus souvent que le best fit. Je l'ai également lu dans le premier volume de The Art of Computer Programming de Knuth.