Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення / Запуск зовнішніх програм 🆕 / Вправи / Захопіть виведення

Розв’язання: Захопіть виведення

Ось один із можливих варіантів розв’язання задачі.

Код

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. У цьому й суть перехоплення — зовнішня програма стає будівельним блоком, чий результат ми обробляємо далі.

Навігація курсом

Захопіть виведення   |   Перевірте код повернення