IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Connaissez-vous les 8 opérateurs Perl secrets ?


Sujet :

Langage Perl

  1. #1
    Expert éminent sénior

    Inscrit en
    Juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 407
    Points : 149 059
    Points
    149 059
    Par défaut Connaissez-vous les 8 opérateurs Perl secrets ?
    Connaissez-vous les 8 opérateurs Perl secrets ?


    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" ?

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    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‎)

  3. #3
    Expert éminent sénior

    Inscrit en
    Juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 407
    Points : 149 059
    Points
    149 059
    Par défaut
    Merci beaucoup pour l'info !

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

    Très cordialement,

    Gordon

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    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 ?

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    ~~ 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
    Linux because rebooting is just for adding medias

  7. #7
    Membre averti Avatar de vintz72
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 154
    Points : 316
    Points
    316
    Par défaut
    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...

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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ï

Discussions similaires

  1. Réponses: 39
    Dernier message: 25/05/2011, 17h28
  2. Réponses: 0
    Dernier message: 17/05/2011, 15h40
  3. Connaissez-vous les 8 opérateurs Perl secrets ?
    Par Gordon Fowler dans le forum Actualités
    Réponses: 0
    Dernier message: 01/12/2009, 12h26
  4. Réponses: 6
    Dernier message: 23/10/2007, 09h32
  5. Connaissez-vous les DSL Tools ?
    Par Promeneur dans le forum Framework .NET
    Réponses: 7
    Dernier message: 16/05/2007, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo