72. Опция -p командной строки Perl 6

Опция -p выполняет код для каждой строки входных данных и печатает переменную $_ в конце каждого цикла.

Следующая программа печатает все строки файла задом наперед:

$ perl6 -npe'.=flip' data.txt

Сама программа использует присваивающий вызов метода: .=flip. Это краткая запись, эквивалентная полному вызову: $_.=flip или $_ = $_.flip.

Такой вызов изменяет значение переменной по умолчанию, поэтому она будет напечатана с уже перевернутой строкой. Эквивалентная программа без использования опции -p выглядит так:

$ perl6 -ne'.flip.say' data.txt

71. Опция -n командной строки Perl 6

Опция -n командной строки Rakudo Perl 6 повторяет программу для каждой строки входного текста, что удобно, например, при обработке текстовых файлов.

Например, вот однострочник, который для каждой строки таблицы из файла печатает сумму всех столбцов:

$ perl6 -ne'say [+] .split(" ")' data.txt 

Предположим, файл data.txt содержит следующее:

10 20 30 40
1 2 3 4
5 6 7 8

В таком случае, на выходе мы получим следующий результат:

100
10
26

Обратите внимание, что можно использовать и перенаправление входного потока средствами командной оболочки:

$ perl6 -ne'say [+] .split(" ")' < data.txt 

Также обратите внимание, что при совместном использовании с опцией -e, ключи должны либо быть указаны вместе, но в порядке perl6 -ne'...', либо отдельно: perl6 -n -e'...'.

70. Опция -e командной строки Perl 6

При пользовании компилятором Rakudo Perl 6 полезно знать несколько опций командной строки, которые могут быть удобны, в частности, при написании однострочников.

Опция -e принимает стоку, в которой, собственно, и содержится вся программа, которая тут же будет выполнена.

Например, вот как можно напечатать текущую версию спецификации Perl 6:

$ perl6 -e'$*PERL.version.say'

Не путайте эту опцию с опцией -E в Perl 5.10+: в Perl 6 нет -E, а есть только -e.