Дзіцячая абалонка не можа экспартаваць проксі назад у 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 толькі дзеля атрымання ў спадчыну.