La voix du secrétaire (Jean)
Présents à la réunion :
La Taverne vient d'être rénovée. Nous avons donc eu du mal à la retrouver. Bien qu'elle soit au même endroit de la place de la République, son aspect extérieur a considérablement changé. C'est pourquoi il a été question lors de la réunion de tourner un clip vidéo qui montrerait la Taverne dans son environnement, de manière à mieux faire comprendre comment la retrouver. À l'intérieur, le rez-de-chaussée a lui aussi bien changé, ainsi que l'escalier. En revanche, le sous-sol n'a subi aucune modification, ou du moins aucune qui saute aux yeux.
Nous avons mangé un blue-cheese-burger bleu et un saignant-cheese-burger bleu, une escalope milanaise, un pavé d'autruche, une salade végétarienne, une autre salade (quelle composition ?). Nous avons bu des bières diverses, un Orangina et une margarita. La serveuse (une nouvelle dont c'était la première journée de travail ici et elle tombe sur nous, la pauvre) nous a allumé des bougies. C'était la réunion anniversaire des cinq ans du groupe, mais je crois bien qu'il y avait plus de cinq bougies.
Nous avons parlé de Perl, Internet, informatique et le reste.
system("mv", $ancien, $nouveau);et D@vid ne teste même pas le code retour du system. La meilleure méthode est :
use File::Copy; move($ancien, $nouveau) or die "problème à l'archivage de $ancien en $nouveau : $!";D@vid tente d'expliquer qu'il avait déjà introduit de nombreux concepts dans l'article, y compris quelques-uns qui ne sont pas directement en relation avec MIME comme les here-documents (documents en ligne). Nicolas rétorque qu'il aurait été préférable de bien écrire l'instruction archivant le fichier, quitte à ne pas donner d'explications. En effet, certains programmeurs s'inspirent des programmes parus dans une revue et reprennent des portions de code pour écrire les leurs. Autant s'arranger pour qu'ils recopient du code bien fait, même s'ils ne peuvent pas encore en juger.
cp $ancien, $nouveau; rm $ancien;et ainsi de suite. En remontant jusqu'au début du script, Sniper a eu l'explication :
use Shell;
my $texte = `cat $fichier`; # PAS BEAU !Rafael évoque également ceux qui programment en Perl comme ils programmaient en C et qui codent :
$debut = sprintf("%3s", $chaine); # PAS BEAU !au lieu d'utiliser substr($chaine, 0, 3).
$resultat = &ma_fonction;et, franchement, cela ne leur a pas manqué. Cette syntaxe fait que la fonction appelée reçoit automatiquement et implicitement le tableau @_ des paramètres d'appel de la fonction supérieure. Pour illustrer cela, voici un programme d'exemple.
# # Test des appels de fonction avec ou sans esperluette # essai('a', 'b', 'c'); sub routine { if (@_) { print "@_\n" } else { print "Pas de paramètres\n" } } sub essai { print "Appel sans esperluette avec paramètres "; routine(1, 2, 3); print "Appel avec esperluette avec paramètres "; &routine(1, 2, 3); print "Appel sans esperluette avec liste vide "; routine(); print "Appel avec esperluette avec liste vide "; &routine(); print "Appel sans esperluette et sans liste "; routine; print "Appel avec esperluette et sans liste "; &routine; }et voici son résultat, sans -w ni use strict
Appel sans esperluette avec paramètres 1 2 3 Appel avec esperluette avec paramètres 1 2 3 Appel sans esperluette avec liste vide Pas de paramètres Appel avec esperluette avec liste vide Pas de paramètres Appel sans esperluette et sans liste Pas de paramètres Appel avec esperluette et sans liste a b cEssayez ce script en déplaçant la définition de routine après celle de essai et en utilisant les diverses combinaisons des quatre lignes suivantes au début du script :
use warnings; use strict; use subs ('routine'); sub routine($$$);
# # Tri par distribution # use IO::File; my @niveau = qw/F E W I D/; # Fatal, erreur, warning, info, débug sub critere { substr $_[0], 0, 1 } my %fic; # Ouverture des fichiers temporaires foreach (@niveau) { $fic{$_} = IO::File->new_tmpfile () or die "Pb pour $_ : $!" } # Distribution while (<DATA>) { my $fh = $fic{critere $_}; print $fh $_ } # Fusion foreach (@niveau) { my $fh = $fic{$_}; seek $fh, 0, 0 or die "seek : $!"; print while <$fh>; } __DATA__ I coucou E ouille ! F bang ! I salut W euh F boum !!! E aie ! I bonjour E ouch ! F crac ! E eek ! F blam ! W mais...L'un des avantages de ce tri est que le temps d'exécution est proportionnel au nombre d'enregistrements à trier, même si vous en avez des millions à trier. C'est asymptotiquement meilleur que le O(n.log(n)) des tris par comparaison. Un autre avantage est que le tri est stable. Dans le cas de l'exemple ci-dessus, cela signifie qu'avant même de lancer le tri, vous pouvez être certain que « ouille » apparaîtra avant « aïe » qui apparaîtra lui-même avant « ouch ». Avec la fonction qsort() de C ou l'instruction sort de Perl, vous n'avez pas cette garantie (à moins de prendre des précautions particulières).
« Mais bien sûûûûr ! Nous vous envoyons immédiatement notre meilleur expert dans ce domaine ! ».Et ils envoyaient, comme convenu, le meilleur expert, avec la facture correspondante. Depuis, il semble que l'administration trouve plus rentable d'avoir des compétences internes dans ce domaine.
s/,/é/gProblème ? Il y a un problème ?
Il y a 10 sortes de gens : ceux qui savent compter en binaire et ceux qui ne savent pas.Lors de la réunion, l'histoire n'a pas fait rire non plus. Mais ce n'est pas le but que Nicolas recherchait.
Un indien entre dans un bar.C'est tout. Nous n'en avons pas su plus. À chaque fois que Sniper a tenté de nous la raconter, quelqu'un lui a coupé la parole à ce moment-là. Mais ce n'est pas grave, l'histoire nous a quand même fait beaucoup rire.