Que signifie "~~" en Perl?
Dans un DONC réponse daxim états:
@array ~~ $scalar is true when $scalar is in @array
à qui draegtun réponses:
De 5.10.1+ de l'ordre de ~~ est
important. Ainsi, il doit être $scalaire
~~ @tableau
Comment parler d'une petite primer sur ~~
avec lien(s) source(s), y compris les questions suivantes: Quel est ~~
? Qu'est-ce que ~~
appelé? Pourquoi l'ordre de la matière dans une version, mais pas dans un précédent?
Notez qu'un bon résumé ne peut pas obtenir tous les détails et peut être difficile à écrire. Une introduction ou un apprêt serait très utile pour gagner du temps pour quelqu'un de familier avec ~~
tout en élargissant l'exposition de cette Perlism.
Les chaînes de recherche: non-word-tilde-tilde
non-word-at-sign
.
source d'informationauteur C.W.Holeman II
Vous devez vous connecter pour publier un commentaire.
Répondre spécifiquement "pourquoi l'ordre de la matière dans une version, mais pas dans un précédent": la smart opérateur de match a été mal conçu au 5.10.0 dans une voie qui est difficile à utiliser de manière fiable, et fait le/lors de la construction moins utile qu'il pourrait l'être, de sorte que la sémantique ont été modifiés avec 5.10.1 et toutes les futures versions de prétendre que l'5.10.0 version n'a jamais existé.
Dans le 5.10.1+ version de smart match, l'opérande de gauche et l'opérande de droite à
~~
sont toujours traités distinctement. Tout comme avec la=~
regex match de l'opérateur, le côté gauche est le "sujet" de la correspondance, et le côté droit est le "modèle" pour le match contre -- qu'il s'agisse d'un simple scalaire, une regex, un tableau ou un hachage de référence, un code de référence, ou que ce soit. Les particularités sont détaillées assez bien dans le perlsyn.Vous ne devriez pas vous soucier de la 5.10.0 version à tous sauf si vous avez déjà écrit un code qui dépend de la 5.10.0 sémantique (dans ce cas, vous devez réécrire à exiger 5.10.1, ou bien il va se briser sur toutes les futures versions de perl).
Smart Match, voir
perldoc perlsyn
Par une demande dans le commentaire, je vais donner un peu plus d': Smart Match est un opérateur pour arbitraire des types de données qui tente de donner un sens à un test d'égalité, ne sachant plus que les types des arguments, de nombreux tests nécessitent des opérations complexes comme l'itération et de la regex application
(vol d'Apprendre le Perl): Binaire "~~" un smart match entre ses arguments.
http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail
Que fait-il? "Cela dépend" la plupart du temps sur le type des arguments fournis. La page liée ci-dessus a petits détails sur ce que les variations sont.
C'est le
smartmatch opérateur.
En général, lorsque vous souhaitez obtenir des informations sur les opérateurs en Perl, voir
perldoc perlop