Я хочу (нужно) запустить подпроцесс из сценария perl, который проверяет определенные переменные среды. В одном случае переменная окружения должна быть там, но пустой.
$ENV{"GREETING"} = "Hello World"; # Valid
$ENV{"GREETING"} = ""; # also valid
Я могу установить $ ENV {"GREETING"} = ""; и в этом perl-скрипте $ ENV {"GREETING"} пуст, но в любом подпроцессе этой переменной среды нет.
Вот пример кода для демонстрации. Этот скрипт env_in.pl устанавливает некоторые переменные окружения, ZZZ_3 пуст. Затем он вызывает env_out.pl для вывода переменных среды, ZZZ_3 отсутствует в выводе.
#!/usr/bin/perl
# env_in.pl
use strict;`enter code here`
use warnings;
$ENV{ZZZ_1} = "One";
$ENV{ZZZ_2} = "Two";
$ENV{ZZZ_3} = "";
$ENV{ZZZ_4} = "Four";
my (@cmd) = ("perl", "env_out.pl");
system(@cmd) == 0 or die "system @cmd failed: $?";
Вот скрипт env_out.pl.
#!/usr/bin/perl
use strict;
use warnings;
print ($_," = ", $ENV{$_}, "\n") for (sort keys %ENV);
Я использую Perl ActiveState версии v5.8.8 на коробке WinXP.
Я знаю, что это работает в Python, но у меня нет выбора в отношении языка реализации, это должен быть Perl.