Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Ввод и вывод / Запуск внешних программ 🆕 / Exercises / Захватите вывод

Решение: Захватите вывод

Вот один из возможных вариантов решения задачи.

Код

my $proc = run 'echo', 'hello world raku', :out;
my $output = $proc.out.slurp(:close).trim;
say $output.words.elems;

🦋 Исходный код можно найти в файле capture-output.raku.

Вывод

3

Комментарии

  1. :out перенаправляет вывод программы в Proc, а не на экран, а .out.slurp(:close) читает его целиком обратно; .trim убирает завершающий перевод строки, который добавляет echo.

  2. Как только вывод стал обычной строкой в нашей программе, мы обращаемся с ним как с любыми другими данными: .words.elems разбивает его по пробельным символам и считает части, давая 3. В этом и смысл захвата — внешняя программа становится строительным блоком, результат которого мы обрабатываем дальше.

Навигация по курсу

Захватите вывод   |   Проверьте код возврата