Детската обвивка не може да извезе прокси назад во 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 обвивка само за да биде наследена.