Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення / Запуск зовнішніх програм 🆕 / Вправи / Захопіть виведення
Розв’язання: Захопіть виведення
Ось один із можливих варіантів розв’язання задачі.
Код
my $proc = run 'echo', 'hello world raku', :out;
my $output = $proc.out.slurp(:close).trim;
say $output.words.elems;🦋 Вихідний код можна знайти у файлі capture-output.raku.
Вивід
3Коментарі
:outперенаправляє вивід програми вProcзамість екрана, а.out.slurp(:close)зчитує його весь назад;.trimприбирає завершальний перехід рядка, який додаєecho.Щойно вивід стає звичайним рядком у нашій програмі, ми поводимося з ним як із будь-якими іншими даними:
.words.elemsрозбиває його за пробільними символами й рахує частини, даючи3. У цьому й суть перехоплення — зовнішня програма стає будівельним блоком, чий результат ми обробляємо далі.