Connaissez-vous les huits opérateurs Perl secrets ?
Si ce n'est pas le cas, découvrez-les ici
Le 2009-12-01 11:26:45, par Gordon Fowler, Expert éminent sénior
Les opérateurs Perl sont des symboles qui permettent de manipuler des variables (pour faire des opérations, les évaluer, etc.). Il en existe de plusieurs types (assignation, incrémentation, comparaison de scalaires ou de chaînes, etc.). Mais il y a un type d'opérateur que beaucoup de développeurs Perl ne doivent pas connaître : les opérateurs secrets.
Ces opérateurs Perl secrets sont au nombre de 8.
En fait, pour plus de rigueur, il convient de préciser qu'un seul est vraiment un opérateur ; les autres sont plus assimilables à des tours de passe-passe syntaxiques.
Cet opérateur secret se nomme le Spaceship Operator (que l'on pourrait abusivement traduire par "l'opérateur de l'espace" :
Ce "vaisseau spatial" est habituellement utilisé pour trier une liste de nombres. Il y a cependant une fonction cachée.
Si vous ne pécifiez pas "<=>" entre les parenthèses de la fonction sort( ), alors la liste de nombres sera traitée comme une chaîne de caractères. En clair, elle sera triée selon l'ordre ASCII.
Les autres opérateurs secrets se nomment l'Eskimo Greeting Operator (le Baiser de l'Eskimo), le Goatse Operator, (en rapport avec le "shock site" Goatse.cx... je vous laisse découvrir pourquoi - NB : lien Wikipedia), le Turtle Operator (la Tortue), le Inchworm Operator (le Ver de Terre) ou le Inchworm-On-A-Stick Operator (le Ver de Terre sur un Bâton).
Sans oublier les deux autres métaphores spatiales : le Spacestation Operator et le Venus Operator.
Tous ces opérateurs secrets sont à découvrir sur le blog de Peteris Krumins, un informaticien Lituanien de 23 ans.
Comme quoi il peut être vrai que la valeur n'attend pas le nombre des années.
Pour mémoire une vidéo de 40 minutes sur les opérateurs secrets de Perl 5 est disponible aussi bien en visionnage qu'en téléchargement.
Lire aussi :
Les rubriques (actu, forums, tuto) de Développez.com :
Langages
Perl
Les programmeurs en Perl seraient les plus malpolis, avec l'emploi de gros mots dans leurs travaux
Fedora 12 arrive avec Perl 6 : la distribution Linux espère ainsi attirer les développeurs
Et vous ? :
Connaissiez-vous déjà ces opérateurs Perl "secrets" ?
Ces opérateurs Perl secrets sont au nombre de 8.
En fait, pour plus de rigueur, il convient de préciser qu'un seul est vraiment un opérateur ; les autres sont plus assimilables à des tours de passe-passe syntaxiques.
Cet opérateur secret se nomme le Spaceship Operator (que l'on pourrait abusivement traduire par "l'opérateur de l'espace"
Code : |
<=>
Si vous ne pécifiez pas "<=>" entre les parenthèses de la fonction sort( ), alors la liste de nombres sera traitée comme une chaîne de caractères. En clair, elle sera triée selon l'ordre ASCII.
Les autres opérateurs secrets se nomment l'Eskimo Greeting Operator (le Baiser de l'Eskimo), le Goatse Operator, (en rapport avec le "shock site" Goatse.cx... je vous laisse découvrir pourquoi - NB : lien Wikipedia), le Turtle Operator (la Tortue), le Inchworm Operator (le Ver de Terre) ou le Inchworm-On-A-Stick Operator (le Ver de Terre sur un Bâton).
Sans oublier les deux autres métaphores spatiales : le Spacestation Operator et le Venus Operator.
Tous ces opérateurs secrets sont à découvrir sur le blog de Peteris Krumins, un informaticien Lituanien de 23 ans.
Comme quoi il peut être vrai que la valeur n'attend pas le nombre des années.
Pour mémoire une vidéo de 40 minutes sur les opérateurs secrets de Perl 5 est disponible aussi bien en visionnage qu'en téléchargement.
Lire aussi :
Les rubriques (actu, forums, tuto) de Développez.com :
Et vous ? :
-
djibrilResponsable Perl et OutilsIl existe déjà une vidéo de 40 minutes disponible sur ce sujet en français. Cette vidéo provient de la journée Perl 2009.
En plus de sa floppée d'opérateurs standards, Perl dispose d'opérateurs SECRETS. Ceux-ci ont été découverts par des golfeurs et des assombrisseurs pendant leur inlassable recherche de concision et d'inintelligibilité.
Cette présentation décrira les principaux de ces opérateurs, qui répondent aux doux noms de Venus, inchworm ou encore baby cart...
Je présenterai également quelques constantes secrètes de Perl.
Intervenant : Philippe Bruhat (‎BooK‎le 01/12/2009 à 13:15 -
Gordon FowlerExpert éminent séniorMerci beaucoup pour l'info !
J'ai rajouté ton lien à la fin de l'article.
Très cordialement,
Gordonle 01/12/2009 à 13:54 -
djibrilResponsable Perl et Outilsle 01/12/2009 à 14:03
-
viking1404Membre régulierJe ne connaissais pas ces opérateurs. Je les trouve jolis, si je puis dire.
C'est pour ce genre fantaisies que j'aime le perl ^^
Juste deux questions : Avec la "réforme" de perl 6, est-ce que ces opérateurs sont toujours valables ?
J'avais cru comprendre que les créateurs de perl voulaient "éliminer" ce genre de choses ?le 01/12/2009 à 19:00 -
psyloxMembre actif~~ est aussi un opérateur avec perl 5.10, il permet de vérifier si une valeur est dans un tableau
cf: Perl 5.10 release
Peut-on vraiment dire que ce sont des opérateurs "secret"? je ne pense pas il s'agit juste d'une utilisation très poussée des possibilités du language
EDIT:
J'ai cependant trouvé cela très interressant, merci pour la newsle 02/12/2009 à 14:31 -
vintz72Membre avertiCet article montre à quel point le Perl peut être puissant tout en étant concis. Le revers de la médaille étant que le code produit est illisible pour qui ne connait pas à fond le langage...le 02/12/2009 à 15:42
-
JedaiExpert éminentOh il permet bien plus que ça, c'est un opérateur de "smart-match" qui adapte son comportement aux types de paramètres fourni, par exemple string ~~ regex va utiliser =~, scalar ~~ sub va appliquer la sub au scalar et évaluer la valeur de vérité du résultat, etc...C'est pratique mais à utiliser avec précaution et uniquement dans des cas où le comportement est évident.
Envoyé par viking1404
Juste pour donner un exemple, le méta-opérateur [.] et l'associativité de chaîne permettent facilement de tester si une liste est rangée en ordre croissant :
Code : 1
2
3
4
5
6if( [<] @nums ) { say "This list is strictly increasing."; } else { say "It is not !"; }
--
Jedaïle 02/12/2009 à 21:00