Question

La lecture de ce Perl: les lignes d'extrait de 1 à n (Windows) Je ne comprenais pas la bascule-opérateur / readline-contre partie.

perl -nE 'say $c if $c=1..3' my_file 
  

1
  2
  3E0

Quelqu'un pourrait-il me expliquer plus détaillée où cette sortie vient?

Était-ce utile?

La solution

perlop :

  

Dans un contexte scalaire, renvoie « de .. » un   valeur booléenne. L'opérateur est   bistables, comme une bascule, et   émule la ligne de gamme (virgule)   opérateur de sed , awk , et divers   rédacteurs en chef. Chaque opérateur « .. » maintient   son propre état booléen, même à travers   les appels à un sous-programme qui contient   il. Il est faux aussi longtemps que sa gauche   opérande est faux. Une fois que la gauche   opérande est vrai, l'opérateur d'intervalle   reste fidèle jusqu'à ce que l'opérande droit est   vrai, après quoi l'opérateur d'intervalle   devient fausse à nouveau. Il ne devient pas   faux jusqu'à ce que la prochaine fois que la plage   l'opérateur est évalué. Il peut tester la   opérande de droite et de devenir faux sur la   même évaluation, il est devenu vrai (comme dans    awk ), mais il retourne toujours vrai une fois.   Si vous ne voulez pas tester le droit   opérande jusqu'à ce que l'évaluation suivante, comme    sed , il suffit d'utiliser trois points ( "...")   au lieu de deux. Dans tous les autres égards,   "..." se comporte comme ".." fait.

     

L'opérande droit n'est pas évalué   tandis que l'opérateur est dans le « faux »   état, et l'opérande gauche n'est pas   évaluée tandis que l'opérateur se trouve dans la   état « vrai ». La priorité est   peu plus bas que || et &&. La valeur   est soit la Returned chaîne vide   pour faux, ou un numéro de séquence   (En commençant par 1) pour vrai. le   numéro de séquence est remis à zéro pour chaque   rencontré plage. La séquence finale   nombre dans une plage a la chaîne « E0 »   annexé à ce , qui ne porte pas atteinte   sa valeur numérique, mais vous donne   quelque chose à chercher si vous voulez   exclure le point final. Vous pouvez exclure   le point de commencer en attendant la   numéro de séquence pour être supérieur à 1.

     

Si l'opérande scalaire « .. » est un   expression constante, que l'opérande est   considéré comme vrai si elle est égale (==)   au numéro de ligne d'entrée de courant (le   variable $.).

(italique ajouté)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top