Сохраняются ли переменные среды через qx в сценарии perl - PullRequest
1 голос
/ 26 марта 2020

У меня есть устаревший сценарий perl, который устанавливает переменную среды

$ENV{"ENV_VAR_NAME"} = $envVar;

и затем использует qx () для выполнения другой команды оболочки

$command = "$xyz";
$result = qx($command);

Будет ли измененное ENV_VAR_NAME быть доступно, когда qx выполняет новую команду.

1 Ответ

2 голосов
/ 26 марта 2020

Да.

perlvar говорит о %ENV:

Установка значения в ENV изменяет среду для любых дочерних процессов, которые вы впоследствии разветвляете () off.

И qx действительно порождает дочерний процесс, который может получить доступ к измененным переменным среды.

Это легко проверить :

print "1: ", qx(echo \$X); # Prints "1: "

$ENV{X} = 42;

print "2: ", qx(echo \$X); # Prints "2: 42"
...