Курс по 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   |   Тест — Обкръжението


💪 Или преминете направо към упражненията в този раздел.