socket bind() errno 22 - нет сокетов с ожиданием времени

В perlиспользуется функция среза массива -(, что позволяет избежать необходимости в цикле for, как вawk):

$ echo word1,word2,word3,a,b,c,d,e | perl -F, -lane 'print join(",",@F[2..$#F])'
word3,a,b,c,d,e

Объяснение команды perl-используемых опций строки (подробнее см. man perlrun):

  • -F,установить разделитель полей для авторазбиения на,
  • -lвключает автоматическую обработку окончания строки -(, т. е. автоматически удаляет новые строки с конца каждой входной строки и добавляет их в каждуюprint-ed выходную строку ).
  • -aвключить режим авторазбиения -каждая входная строка автоматически разбивается на массив @F.
  • -nчтение и обработка каждой строки стандартного ввода и/или любых аргументов имени файла (по существу,цикл while(<>)по всему сценарию)
  • -eвыполнить следующий аргумент (строку в кавычках )как Perl-скрипт.

Примечание:perlМассивы основаны на нуле -, а не на единице -, поэтому третье поле — это элемент массива 2, а не 3 (, то есть @F[2], , а не@F[3]).

$#F— порядковый номер последнего элемента массива @F, поэтому @F[2..$#F]означает «все элементы массива @Fот третьего до последнего».


Кстати, есть еще одна опция -p, которая очень похожа на -n, за исключением того, что в конце каждого прохода по циклу while(<>)также печатается входная строка. Если входная строка была изменена какими-либо предыдущими операторами, то строка печатается как измененная.

Одно из применений этого заключается в том, что он позволяет вам писать оченьsed-подобные скрипты в perl(, но со всеми функциями и синтаксическим сахаром perlв дополнение кsed). например. perl -pe 's/foo/bar/g'и sed -e 's/foo/bar/g'будут иметь идентичный выход при одинаковых входных данных.

Точно так же -nв сочетании с -aпозволяет легко писать сценарии, очень похожие на awk-. На самом деле, perl -lane— это в значительной степени стандартный способ написатьawk-как один вкладыш -с perl.

Одной из сильных сторон perlявляется то, что он сочетает в себе функции sed,awktr), а также многое другое, включая доступ к огромной библиотеке модулей, называемой «Comprehensive Perl». Архивная сеть" или CPAN

0
23.10.2019, 12:35
0 ответов

Теги

Похожие вопросы