Vous voulez venir à la prochaine réunion, et vous ne savez pas où c'est ? Voici le guide.
La voix du secrétaire perpétuel permanent informel officiel
Lorsque que je suis arrivé à la taverne République, à 8 heures plus ou moins quelques minutes, j'ai remarqué un couple de cyclistes assis en terrasse. À part son équipement cycliste, l'homme n'avait rien de particulier, mais la femme portait un T-shirt avec la mention geek. C'est comme cela que j'ai compris qu'il s'agissait de nos invités Sara et Steve, d'Atlanta.
Nous sommes allés comme de coutume en sous-sol. Là, contrairement à l'habitude, la salle était déjà occupée par trois groupes. L'un d'entre eux avait semble-t-il prévu une séance impromptue de karaoké (impromptue, donc sans équipement, heureusement), et comme Jeffrey Friedl le dit de lui-même dans la préface de Mastering Regular Expressions, les membres de ce groupe compensent leur manque de talent par un volume sonore élevé. Et nous avons dû les supporter pendant plus d'une heure...
Les autres participants, dont deux revenants, sont arrivés rapidement :
Nous avons abordés les sujets suivants :
Cela dit, il n'y a pas eu d'élection pour un secrétaire adjoint. On verra bien qui fera le compte-rendu du mois d'avril. Moi je ne serai pas là.
Eh bien je crois que ce sera pour ma pomme -- David
int main (int argc, char * argv[]) { return 0; }
La voix de David
Ce ne serait pas plutôt :
int main (int argc, char **argv) { char buf[4096]; while( fread( buf, sizeof(buf), 1, stdin )) } ; } return 0; }
Cela dit, d'autres personnes ne doutent de rien. Allez donc voir ce lien, puis cherchez la chaîne de caractères « Zelos »...
my Student $st1;mais d'une part, cela n'est pas prévu pour les types élémentaires, d'autre part, même pour les modules, le seul effet est documentaire. Pour Stéphane, ce manque d'efficacité fait que Perl perd du terrain par rapport à Python et à Java, pour lesquels il est possible de faire des compilations avec optimisation.
Un penseur contemporain et bienfaiteur de l'humanité a dit à ce sujet (je traduis) : dire qu'il ne faut pas utiliser un opérateur autrement que pour sa fonction d'origine me rappelle ceux qui disent qu'il ne faut pas avoir de relations sexuelles dans un but autre que la procréation. Parfois, les effets secondaires sont plus agréables que la fonction principale.
Une coïncidence a fait que, le lendemain de la réunion, j'étais en train d'éplucher Date::Convert de Mordechai Abzug. À un moment, il cherche à convertir un numéro de jour $nbj de 1 à 365 (pour une année normale) en numéro de mois $num_mois et numéro de jour dans le mois. Il procède de la sorte :my @tabj = (0, 31, 59, 90, 120, 151, 181, 212, 233, 263, 304, 334); my $num_mois = grep { $_ < $nbj } @tabj;ce qui convertit 1 à 31 en 1 (janvier), 32 à 59 en 2 (février), etc. Il faudrait passer cela au chronomètre, mais à vue de nez, cela doit être valable pour une table d'une vingtaine de postes. Si la table dépasse la centaine de postes, il est préférable de revenir à une recherche séquentielle, voire d'utiliser une recherche dichotomique.
$_ = <STDIN>; while (1) { /\G(\w+)=([^, ]+)/gc && print "Mot-cle $1, valeur $2\n" or /\G./gc or last; }\G et /g permettent de reprendre la recherche là où on s'était arrêté. Sauf que, si la recherche a foiré à l'itération précédente, on repartira au début de la chaîne. Et justement, /c permet de signaler que l'on repartira de l'endroit où l'on s'était arrêté, même si la recherche n'a pas abouti. Essayez le bout de code ci-dessus, sans le /c, vous verrez, ça boucle !
(Si tu avais eu connaissance des conseils de David, tu aurais peut-être écrit map {&$_()} @_ !)D'autre part, Samuel a mis son gestionnaire d'exceptions sur le web (mais pas encore sur CPAN).
Et je
reste, jusqu'à la prochaine fois, votre humble et
dévoué secrétaire
(c'est pas de moi, je l'ai
pompé dans le
P5P
digest de Mark-Jason D.).