Я предполагал, что print "foo"
является просто ярлыком для print STDOUT "foo"
.Какова цель печати `perl` по умолчанию?
Однако я не заметил, что (по крайней мере) в сочетании с переключателем -i
это предположение уже не имеет:
perl -ni 'print $_' file
это просто не изменяет содержимое файла.
perl -ni 'print STDOUT $_' file
Это, однако, печатает содержимое терминала и оставляет файл пустым.
Поэтому вопрос: какова цель печати по умолчанию? То есть где печатает первую печать?
perldoc -f print
говорит:
Для установки вывода по умолчанию дескриптор в нечто иное, чем STDOUT, используйте операции выбора.
Очевидно, что perl внутренне использовал операцию select, чтобы установить дескриптор вывода по умолчанию на что-то еще. Есть ли способ явно указать текущий дескриптор вывода по умолчанию?
Это позволило бы мне написать что-то вроде
perl -i -wne 'print {/b/ ? STDOUT : XXX } $_' file
построить grep
, который удаляет все печатные линии.
Вы посмотрели документы для флага '-i'? Что ты изучал? – Mat
Да, я сначала искал опцию '-i' в' man perlrun'. Я не мог найти ответ. – michas