Нужно больше объяснений о том, что здесь делается? - PullRequest
1 голос
/ 22 июня 2011
print reverse <>;
print sort <>;

Какие именно шаги Perl выполняет с этими операциями?

Кажется, для 1st, perl не только меняет порядок параметров вызова, но также и содержимое каждого файла ...

Ответы [ 2 ]

2 голосов
/ 22 июня 2011
 print reverse <>;

<> оценивается в контексте массива, что означает, что он "хлебает" файл. Читает весь файл. В случае магического файла, представленного файлами, названными в @ARGV, он будет читать содержимое всех файлов в порядке, указанном аргументами командной строки (@ARGV).

reverse затем меняет порядок массива в обратном порядке, что означает, что последняя строка из последнего файла идет первой, а первая строка из последнего файла - последней.

print затем печатает массив.

Из ваших заметок вы можете захотеть что-то вроде этого:

perl -e 'sub BEGIN { @ARGV=reverse @ARGV; } print <>;' /etc/motd /etc/passwd
1 голос
/ 22 июня 2011

Это описано в документах для операторов ввода-вывода .Вот выдержка из документов:

Нулевой дескриптор файла <> особенный: его можно использовать для эмуляции поведения sed и awk.Ввод из <> поступает либо из стандартного ввода, либо из каждого файла, указанного в командной строке.Вот как это работает: при первом вычислении <> проверяется массив @ARGV, а если он пуст, $ ARGV [0] устанавливается в «-», что при открытии дает стандартный ввод.Затем массив @ARGV обрабатывается как список имен файлов.

Стоит прочитать весь документ, так как он предоставляет эквивалентный "немагический" код Perl, эквивалентный <> в различных случаях использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...