Дъщерна обвивка не може да експортира прокси обратно в Perl
Задайте ENV на Perl директно и ограничете прокси променливите с local около едно извикване на дъщерен процес, за да се върнат първоначалните стойности след това.
Команда с backtick, съдържаща export, променя само обвивката, създадена за тази команда. Когато обвивката приключи, родителският процес на Perl все още има предишната си среда.
Задайте вместо това хеша на средата на Perl. local може да задържи промяната в един блок:
{
local $ENV{http_proxy} = 'http://proxy.example:8080';
local $ENV{https_proxy} = 'http://proxy.example:8080';
my $status = system {
'/usr/bin/curl'
} '/usr/bin/curl', '--fail', '--max-time', '30',
'https://downloads.example/data.csv';
die "Downloader failed: $status" if $status != 0;
}
Дъщерният процес наследява локализираните стойности. За публично HTTP изтегляне крайна точка от списъка с HTTP проксита може да предостави тези URL стойности. Когато блокът приключи, Perl възстановява предишните записи, включително предишното им отсъствие. Показаният резултат от system е статусът на процеса на Perl, а не декодиран код на HTTP отговор.
local има динамичен обхват: друг Perl код, извикан в този блок, също вижда временната среда. Това не е частно хранилище за идентификационни данни за всяка функция.
Прегледайте наследените променливи с главни букви и променливите за заобикаляне за избрания клиент. Изтеглящият инструмент решава кои входни данни използва. Настройката на прокси също не променя потребителската идентичност на процеса и не изисква отделна root обвивка само за да бъде наследена.