Connaissez-vous les huits opérateurs Perl secrets ?
Si ce n'est pas le cas, découvrez-les ici

Le , 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") :

Code : Sélectionner tout
<=>
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" ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de djibril djibril - Responsable Perl et Outils https://www.developpez.com
le 01/12/2009 à 13:15
Il 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‎)
Avatar de Gordon Fowler Gordon Fowler - Expert éminent sénior https://www.developpez.com
le 01/12/2009 à 13:54
Merci beaucoup pour l'info !

J'ai rajouté ton lien à la fin de l'article.

Très cordialement,

Gordon
Avatar de djibril djibril - Responsable Perl et Outils https://www.developpez.com
le 01/12/2009 à 14:03
Avatar de viking1404 viking1404 - Membre régulier https://www.developpez.com
le 01/12/2009 à 19:00
Je 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 ?
Avatar de psylox psylox - Membre actif https://www.developpez.com
le 02/12/2009 à 14:31
~~ 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 news
Avatar de vintz72 vintz72 - Membre actif https://www.developpez.com
le 02/12/2009 à 15:42
Cet 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...
Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 02/12/2009 à 21:00
Citation Envoyé par psylox  Voir le message
~~ est aussi un opérateur avec perl 5.10, il permet de vérifier si une valeur est dans un tableau

Oh 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.

Citation Envoyé par viking1404
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 ?

Je ne sais pas où tu as entendu ça, peut-être que ce qu'il voulait dire c'était que Perl6 serait à la fois plus riche et plus régulier et qu'il n'y aurait donc pas besoin d'opérateurs "secrets". En tout cas avec ses méta-opérateurs, ses opérateurs infixes, préfixes, suffixes, ..., ses jonctions, ses règles d'associativité à gauche, à droite, de chaîne et de liste, on ne peut pas dire que Perl6 sera plus faible niveau opérateur que Perl5 !!
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 : Sélectionner tout
1
2
3
4
5
6
if( [<] @nums ) { 
  say "This list is strictly increasing."; 
}  
else { 
  say "It is not !"; 
}
("[*] (1, 3, 4, 5)" <=> "1 * 3 * 4 * 5", et "1 < x < 5" <=> "1 < x and x < 5")

--
Jedaï
Offres d'emploi IT
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Architecte systèmes études & scientifiques H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil