Pregunta

La lectura de este Perl: filas de extracto de 1 a N (Windows) no entendía la parte flip-flop-operador / readline de venta libre.

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

1 |   2
  3E0

Podría alguien explicarme más detallada en esta salida viene?

¿Fue útil?

Solución

Para citar perlop :

  

En el contexto escalar, devuelve ".." una   valor booleano. El operador es   biestable, como un flip-flop, y   emula la línea de gama (coma)   operador de sed , awk , y varios   editores. Cada operador ".." mantiene   su propio estado booleano, incluso a través de   llama a una subrutina que contiene   eso. Es falso, siempre y cuando su izquierda   operando es falso. Una vez que la izquierda   operando es verdadero, el operador de rango   se mantiene fiel hasta que el operador derecho es   cierto, después de lo cual el operador de rango   se convierte en falsa de nuevo. No se convierte en   falsa hasta que la próxima vez que el rango   se evalúa operador. Se puede probar la   operando derecho y convertirse en la falsa   misma evaluación que se hizo realidad (como en    awk ), pero todavía devuelve verdadero vez.   Si usted no quiere poner a prueba la derecha   operando hasta la siguiente evaluación, tal como   en sed , sólo tiene que utilizar tres puntos ( "...")   en lugar de dos. En todos los demás aspectos,   "..." se comporta como ".." lo hace.

     

El operando de la derecha no se evalúa   mientras que el operador se encuentra en la "falsa"   estado, y de la izquierda operando no es   evaluó mientras el operador se encuentra en la   estado "verdadero". La precedencia es una   poco menor que || y &&. El valor   devueltas es la cadena vacía   para falso, o un número de secuencia   (Comenzando con 1) para la verdadera. los   número de secuencia se restablece para cada   gama encontrado. La secuencia final   número en un rango tiene la cadena "E0"   anexado a él , que no afecta   su valor numérico, pero le da   algo para buscar si desea   excluir el punto final. Puede excluir   el punto de partida por la espera de la   número de secuencia sea mayor que 1.

     

Si alguno de los operandos de escalar ".." es una   expresión constante, que operando es   considerado verdadero si es igual (==)   al número de línea de entrada actual (la   variable de $.).

(énfasis añadido)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top