Курс по Raku / Обекти, вход-изход и изключения / Вход и изход / Стартиране на външни програми 🆕 / Exercises / Подайте променлива на дъщерен процес
Решение: Подайте променлива на дъщерен процес
Ето едно възможно решение на задачата.
Код
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— без нужда от обвивка. Изтриването на файл е обикновена операция на файловата система, така че няма причина да се стартира още един процес за нея.