Флип-Флоп-Оператор / Счетчик для чтения-встречи

StackOverflow https://stackoverflow.com/questions/4071517

Вопрос

Чтение этого Perl: Извлечение строк от 1 до n (Windows) Я не понимал, что флип-флоп-оператор / чтение-счетчик-счетчик.

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

1
2
3E0

Может ли кто-нибудь объяснить мне более подробно, откуда этот вывод?

Это было полезно?

Решение

Цитировать погибший:

В скалярном контексте "..«Возвращает логическое значение. Оператор бистибируется, как флип-флоп, и эмулирует оператор линии (запятой) север, awk., и различные редакторы. Каждый "..«Оператор поддерживает свое собственное логическое состояние даже через призывы к подпрограмму, которое содержит его. Это ложно, если его левый операнд неверный. После того, как левый операнд, оператор диапазона остается верным, пока правый операнд не будет правдой, после Какой оператор диапазона снова становится ложным. Он не становится неверным до следующего раза в следующий раз оценивается оператор диапазона. Он может проверить правильный операнд и стать ложным на той же оценке, который он стал правдой (как awk.), но это все еще возвращает истина один раз. Если вы не хотите, чтобы это проверить правильный операнд до следующей оценки, как в север, просто используйте три точки ("...«) вместо двух. В всех других пожеланиях:..."ведет себя как".." делает.

Правый операнд не оценен, пока оператор находится в «ложном» состоянии, а левый операнд не оценивается, пока оператор находится в «истинном» состоянии. Приоритет немного ниже, чем || а также &&. Отказ Возвращенная стоимость либо пустая строка для false, либо порядковый номер (начиная с 1) для true. Количество последовательности сбрасывается для каждого диапазона. Конечный номер последовательности в диапазоне имеет строку «E0», добавленную к нему, что не влияет на его числовое значение, но дает вам что-то поиску, если вы хотите исключить конечную точку. Вы можете исключить начальную точку, ожидая, что номер последовательности больше 1.

Если операнд скаляра "..«Это постоянное выражение, этот операнд считается верным, если оно равно (==) к текущему номеру входных строк ( $. Переменная).

(акцент добавлен)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top