Как очистить вывод в обратных кавычках в Perl?

StackOverflow https://stackoverflow.com/questions/758611

  •  09-09-2019
  •  | 
  •  

Вопрос

Если у меня есть это приложение Perl:

print `someshellscript.sh`;

который печатает кучу всего и занимает много времени, как я могу распечатать этот вывод в середине выполнения сценария оболочки?

Похоже, Perl будет печатать результат someshellscript.sh только после завершения. Есть ли способ сбросить вывод в середине выполнения?

Это было полезно?

Решение

Вероятно, вы хотите сделать что-то вроде этого:

open(F, "someshellscript.sh|");
while (<F>) {
    print;
}
close(F);

Это работает someshellscript.sh и открывает канал, который считывает его выходные данные.А while Цикл считывает каждую строку вывода, сгенерированную сценарием, и печатает ее.См. открыть страницу документации для получения дополнительной информации.

Другие советы

Проблема здесь в том, что экранирование с помощью обратных кавычек сохраняет ваш скрипт в строку, которую вы затем печатаете.По этой причине не было бы возможности «прошить» печатью.

Использование команды system() должно печатать выходные данные непрерывно, но вы не сможете захватить выходные данные:

system "someshellscript.sh";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top