La voix du secrétaire (Jean)
La réunion a eu lieu alors que la grève du 13 mai n'était pas encore terminée. De nombreux habitués ont donc été dans l'incapacité de venir, faute de transport. D'autres ont fait le trajet à pied, en partie ou en totalité : moi depuis la gare Saint-Lazare, Stéphane depuis chez lui à Arcueil, qui d'autre encore ? Ont donc réussi à être présents à la réunion :
Pendant un certain temps, j'ai cru que la section Perl ne comporterait que des sujets connexes à Perl, mais en fin de soirée, David a gribouillé du code Perl sur sa nappe en papier et je l'ai prise en partant. Nous avons également parlé d'Internet, d'informatique et de sujets divers. De plus, pour je ne sais quelles raisons, les digressions ont un volume plus élevé que d'habitude, c'est pourquoi je les ai rassemblées dans une section à part.
foreach my $x (...) { my $re = "$x["; $re .= ... }ce qui lui donne une erreur de syntaxe, l'interpréteur estimant qu'il souhaitait interpoler un élément de tableau dans la chaîne. Ce bug se produit uniquement sur Solaris et si l'interpolation dans la chaîne a lieu à l'intérieur d'une boucle. Dans les autres architectures, l'interpréteur comprenait qu'il s'agissait d'un scalaire et d'un caractère constant [.
do
BLOCK
permet de changer
une instruction ou une séquence d'instructions en expression.
Par exemple, David avait besoin d'initialiser un hash de diverses façons
en fonction d'un paramètre. Pour certaines valeurs de ce paramètre, il
devait même faire planter le programme. Pour ce faire, il a utilisé
un bout de code dans le style :my %hash = do { if ($cond) { {}; die 'Failed!'; } else { ( a => 1, b => 2 ); } };
setref ( sub { $a <=> $b } ); @x = sort foo @b; setref( sub { $a->[0] cmp $b->[0] } ); @y = sort foo @b; my $sortref; sub foo ($$) { &$sortref(@_); } sub setref { $sortref = $_[0]; }Si David a attribué un prototype à
foo
, c'est parce
qu'Eric lui a fait remarquer que foo
récupère ses
arguments dans @_
, donc, pour fonctionner dans un
tri, la fonction doit avoir un prototype ($$)
.
Un peu plus tard, il donne un autre exemple de code, beaucoup plus
simple :
$sort = sub { $b <=> $a } @b = sort $sort @x;
$HOME = '/home/book/.cpan/'; $CPAN::Config->{cpan_home} = '$HOME'; $CPAN::Config->{build_dir} = '$HOME/build'; $CPAN::Config->{keep_source_where} = '$HOME/sources';Il s'est donc retrouvé avec un sous-répertoire
/home/book/$HOME
. Pour corriger, il a alors
tapé rm -rf $HOME/*
, cette fois-ci sans quotes.
L'action suivante a été de téléphoner à Eric pour savoir s'il avait fait
des sauvegardes récentes. Quand je demande si Eric utilise /dev/null
pour ses sauvegardes, en signalant que les temps de réponse sont très bons,
Guillaume répond qu'il a déjà entendu parler de cette astuce dans
Bastard Operator From Hell.
rm
ou autre ? Du coup, que se passe-t-il lorsque le répertoire courant
contient un fichier qui porte le nom farfelu -rf ?
Je me souviens avoir déjà vu un nom de fichier commençant par un tiret,
mais heureusement pas une option valide de rm
.
Guillaume prend l'exemple des programmes MS-DOS. Si l'on veut
prévoir le support des expressions globales dans un programme MS-DOS,
il faut tout faire soi-même. BooK lui répond que si le système était bien conçu, il
pourrait suffire de linker le programme avec une bibliothèque standard.
Programmer avec la Xlib, c'est comme extraire une racine carrée avec des chiffres romains.[ Digression ]
Out of sight, out of mind.David nous donne une phrase dans laquelle il est difficile à un programme informatique de déterminer où est le verbe :
L'esprit est fort mais la chair est faible.
Rice flies like sand.
Cela fait trois ans que je vis dans l'appartement de ma maîtresse, rue XXX, à Paris. Non, n'allez pas en conclure que je suis ce genre d'individu méprisable auquel vous pensez...Le narrateur raconte ensuite sa vie avec sa maîtresse : l'attente quand elle part travailler et qu'il reste à l'appartement, les promenades en voiture le week-end, etc. Il évoque même, sans s'appesantir, les caresses dont elle le gratifie. Ensuite, il raconte que de temps en temps, elle rencontre un homme qui lui plaît. La vie du narrateur prend alors un tour désagréable : il est mis à la porte de la chambre et il est obligé de dormir sur le canapé du salon. De même, lors des promenades en voiture, il est relégué sur la banquette arrière. Mais invariablement, au bout de quelques semaines...
je la vois arriver en pleurs. Elle se précipite sur moi, me prends dans ses bras et me dis : « Jamais il ne m'y reprendra. Il n'y a que toi qui m'aimes, je m'en rend compte maintenant. » Tout en remuant la queue, je me mets à lui lêcher le visage et à aboyer de bonheur.
Ankh-Morpork people, said the Guild, were hearty, no-nonsense folk who did not want chocolate that was stuffed with cocoa liquor, and were certainly not like effete la-di-dah foreigners who wanted cream in everything. In fact they actually preferred chocolate made mostly from milk, sugar, suet, hooves, lips, miscellaneous squeezings, rat droppings, plaster, flies, tallow, bits of tree, hair, lint, spiders and powdered cocoa husks. This meant that according to the food standards of the great chocolate centres in Borogravia and Quirm, Ankh-Morpork chocolate was formally classed as 'cheese' and only escaped, through being the wrong colour, being defined as 'tile grout'.... et estimez-vous heureux que je n'ai jamais cité les passages où Terry Pratchett évoque la bière.