Способ выяснить любой код - это выделить его. Вы знаете, что вещи внутри скобок происходят раньше, чем вещи снаружи. Это так же, как вы выясните, что код делает на других языках.
Первый бит:
( select(s), $|=1 )
Этот список состоит из двух элементов, которые являются результатом двух операций: один для выбора дескриптора файла s
по умолчанию, а другой - для установки $|
в истинное значение. $|
- это одна из переменных для каждого дескриптора файла, которая применяется только к текущему выбранному дескриптору файла (см. Понимание глобальных переменных в Effective Perler ). В итоге у вас есть список из двух элементов: предыдущий дескриптор файла по умолчанию (результат select
) и 1.
Следующая часть - это буквальный фрагмент списка для извлечения элемента в индексе 0:
( PREVIOUS_DEFAULT, 1 )[0]
Результатом этого является один элемент, который является предыдущим дескриптором файла по умолчанию.
Следующая часть берет результат среза и использует его в качестве аргумента для другого вызова select
select( PREVIOUS_DEFAULT );
Таким образом, по сути, вы установили $|
для файлового дескриптора и в итоге вернулись к тому, с чего начали с файловым дескриптором по умолчанию.