Как получить текущий номер строки во время итерации "raku -n"? - PullRequest
6 голосов
/ 12 марта 2020

В Perl Я мог бы:

cat file.txt | perl -nE 'say $.' 

Ближайшее найденное мной решение Raku (без использования переменной счетчика состояния) возвращает позицию в байтах:

cat file.txt | raku -ne 'say $*IN.tell' 

Ответы [ 2 ]

12 голосов
/ 12 марта 2020

Используйте переменную состояния для нее и увеличивайте ее. Удобнее всего иметь анонимную переменную состояния $, что означает, что можно сделать:

echo -e "foo\nbar\nbaz" | perl6 -ne 'say $++ ~ ": $_"'

, что дает:

0: foo
1: bar
2: baz

Использовать ++$ вместо нумерации с базовым номером 1. В ручке нет ничего особенного; он аккуратно выпадает из переменных состояния или, для явной итерации, .lines.kv, а затем оплачивается только теми вещами, которые этого хотят.

3 голосов
/ 12 марта 2020

Модуль LN , вероятно, то, что вы хотите использовать.

...