Курс по Raku / Обекти, вход-изход и изключения / Вход и изход / Стартиране на външни програми 🆕
Обкръжението
Всяка програма се стартира с набор от променливи на средата
— именувани стойности като HOME, PATH или
USER, които операционната система предоставя. В Raku те са
достъпни в динамичния хеш %*ENV:
say %*ENV<HOME>; # домашната директория, например /home/annaЧетете променлива на средата, като индексирате %*ENV с
името ѝ. Понеже това е обикновен хеш, можете също да проверите дали
дадена променлива е зададена, или да я промените за програмите, които
стартирате:
%*ENV<GREETING> = 'Hello';
say %*ENV<GREETING>; # HelloЗадаването на ключ в %*ENV го добавя към средата, която
всяка програма, стартирана след това с run или
shell, ще наследи — така подавате настройки надолу към
дъщерна програма:
%*ENV<GREETING> = 'Hello';
my $proc = run 'sh', '-c', 'echo $GREETING', :out;
say $proc.out.slurp(:close).chomp; # HelloПроменливата се задава в средата на вашата програма преди
стартирането на детето, така че обвивката, която run пуска,
вече има GREETING в собствената си среда и може да го
изведе обратно. Всяка променлива, зададена по този начин, достига до
всяка програма, която стартирате след това.
Тайгълът * ви подсказва, че %*ENV е
динамична променлива, като $*OUT от частта за входа и
изхода. Няколко други променливи със звездичка описват света на
работещата програма — @*ARGS съдържа аргументите от
командния ред, а $*PROGRAM-NAME е собственото име на
скрипта. Заедно те позволяват на програмата да разбере контекста, в
който е стартирана.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Обектът Proc | Тест — Обкръжението →
💪 Или преминете направо към упражненията в този
раздел.