Автор: Andrew Shitov
Amsterdam, Netherlands
Велосипед в снегу — Амстердам
Amsterdam, Netherlands
Amsterdam, Netherlands
Haarlem, Netherlands
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.