Как стать автором
Обновить

Комментарии 20

Супер!=) Спасибо, не знал)
НЛО прилетело и опубликовало эту надпись здесь
почему работает? perl неявно чтоли сопоставляет тут $. вместо $_?
Да, только я бы не назвал это «вместо $_»? эта переменная здесь была бы не к месту. В перлдоке говорится, что если булевскому оператору диапазона указать скалярную переменную в качестве операнда, она будет сравниваться с $.
НЛО прилетело и опубликовало эту надпись здесь
Ну так-то, конечно, да, может немного сбивать с толку. С другой стороны, shift работает по умолчанию не с $_, а с ARGV или с @_. Так что ситуация явно не уникальна.

Кстати, заодно небольшая поправка по поводу if 1..1: если бы скаляры не сравнивались с $., то это бы не работало: 1..1 всегда возвращал бы истину. (Левый операнд — истина, поэтому оператор возвращает истину. И одновременно с этим правый операнд тоже истина, поэтому состояние оператора сразу же переключается обратно, и на следующей операции ситуация просто повторяется. Это как если бы весь файл из моего примера состоял из одних только однострочных комментариев, таких как в девятой строке — они всё равно все считались бы комментариями.)
спасибо за ссылку :)
А напомните, в таком цикле нельзя номер строки получить без заведения дополнительной переменной-счётчика?

Просто если можно, то использование такого трюка может и яркО, но нафиг не оправдано…

А интересности конечно интересны, спасибо.
НЛО прилетело и опубликовало эту надпись здесь
только вчера перечитывал perldoc по этому поводу
совпадения не случайны :)
Главное не забывать о том, что написано в последнем абзаце
НЛО прилетело и опубликовало эту надпись здесь
Всё это здорово, но практического применения не имеет по простой причине: малоизвестность, а значит даже если я или вы знаем о таких особенностях, поддержка кода с такими операторами будет затруднена.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, за ваш простой и понятный пример, теперь все точно разложено по полочкам :)
весьма подробно расписано, отчего сразу понятно. спасибо — я его раньше только для циклов типа «for my $i (1..10)» и в массивах использовал. Кстати про массивы — ещё удобно выбирать им из существующего массива, скажем, первые и последние 5 элементов, что-то вроде @array[1… 5, $i-5… $i]
Вроде как называется Flip-Flop operator — срабатывает только внутри условий для ветвления или цикла. Читал про него в книге по Ruby, сказано что сперли из Перля, но использовать не рекоммендуют по очевидным причинам :)
Кто-то по всем ответам без разбора прошёлся с минусовалкой. Интересно, администрации Хабра до сих пор лень с такими явлениями начать борьбу?
Самое интересное, на некоторых сайтах по документации perl оператор диапазона в скалярном контексте объясняется ошибочно, точнее, перевод документации подкрепляется ошибочными примерами.

НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации