В моем скрипте perl я хочу получить переменную окружения моей переменной perl. Я могу это сделатьКак я могу получить изменяющуюся переменную среды в perl
$no_of_lic = $ENV{`ON_OF_ENV`};
, но это работает только в первый раз, если переменная окружения изменяется в том же сценарии оболочки, то она не будет принимать обновленное значение.
мой код:
!/usr/local/bin/perl -w
$no_of_lic = $ARGV[0];
$ENV{'NO_OF_LIC'} = $no_of_lic;
print "No of lic to be picked : $no_of_lic\n";
print "Environment var : $ENV{NO_OF_LIC}\n";
sleep(1);
while ($no_of_lic != 0) {
sleep(1);
print "no of lic : $no_of_lic\n";
#$no_of_lic = $ENV{'NO_OF_LIC'};
sleep(10);
}
в то время как скрипт работает в фоновом я изменю переменные окружения setenv $NO_OF_ENV 5
После того, как я это сделать, я ожидал, что сценарий будет печатать с обновленными значениями как 5
но его не происходит .. может ли кто-нибудь сказать, как это сделать?
Программам предоставляется среда, когда они начинаются. Изменение среды в родительском (или любом другом процессе) не обновляет среду дочернего процесса. Если вам нужно общаться с программой, подумайте о том, чтобы использовать файл (каждый раз читайте его в цикле) или какой-либо другой механизм IPC (сокеты, база данных и т. Д.). –
@KyleBurton: Пожалуйста, опубликуйте это как ответ. – Borodin
Выполнено, но уже есть ответы на другие вопросы ... Спасибо @Borodin –