Курс Raku / Об’єкти, введення-виведення та винятки / Введення та виведення / Запуск зовнішніх програм 🆕 / Вправи / Передайте змінну дочірньому процесу
Розв’язання: Передайте змінну дочірньому процесу
Ось один із можливих варіантів розв’язання задачі.
Код
my $file = 'notes.txt';
spurt $file, "one\ntwo\nthree\n";
%*ENV<NOTES> = $file;
my $proc = shell 'wc -l < "$NOTES"', :out;
say $proc.out.slurp(:close).trim;
unlink $file;🦋 Вихідний код можна знайти у файлі read-env.raku.
Вивід
3Коментарі
spurtстворюєnotes.txtіз трьома рядками. Встановлення%*ENV<NOTES>в його ім’я кладе назву файлу в середовище, яке успадкує будь-яка дочірня програма.Команда
shellуспадковує це середовище, розгортає$NOTESуnotes.txtі подає файл доwc -l, який рахує його рядки. Перенаправлення< "$NOTES"лишає у виводі саме число3, яке ми перехоплюємо через:outі обрізаємо.Нарешті прибирання виконується назад у Raku через
unlink— жодної оболонки не потрібно. Видалення файлу є звичайною операцією файлової системи, тож немає причин заводити заради неї ще один процес.