بالا shell پروكسىنى Perl غا قايتۇرۇپ چىقىرالمايدۇ
Perl نىڭ ENV نى بىۋاسىتە تەڭشەڭ ۋە بىر بالا چاقىرىشى ئەتراپىدا local بىلەن پروكسى ئۆزگەرگۈچىلىرىنى چەكلەڭ، شۇنداق بولغاندا ئەسلى قىممەتلەر كېيىن قايتىدۇ.
ئىچىدە export بار backtick بۇيرۇقى پەقەت شۇ بۇيرۇق ئۈچۈن قۇرۇلغان shell نى ئۆزگەرتىدۇ. Shell چېكىنگەندە، ئاتا Perl جەريانى يەنىلا ئۆزىنىڭ ئىلگىرىكى مۇھىتىنى ساقلايدۇ.
ئۇنىڭ ئورنىغا Perl نىڭ مۇھىت hash نى تەڭشەڭ. 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;
}
بالا local قىلىنغان قىممەتلەرنى مىراس ئالىدۇ. ئاممىۋى HTTP چۈشۈرۈش ئۈچۈن HTTP پروكسى تىزىملىكىدىكى بىر ئاخىرلاش نۇقتىسى شۇ URL قىممەتلىرىنى تەمىنلىيەلەيدۇ. بۆلەك ئاخىرلاشقاندا Perl ئىلگىرىكى خاتىرىلەرنى، شۇنداقلا ئۇلارنىڭ ئىلگىرى يوقلۇقىنىمۇ ئەسلىگە كەلتۈرىدۇ. كۆرسىتىلگەن system نەتىجىسى Perl جەريانىنىڭ ھالىتى، ئېچىلغان HTTP ئىنكاس كودى ئەمەس.
local نىڭ دائىرىسى ھەرىكەتچان: شۇ بۆلەك ئىچىدە چاقىرىلغان باشقا Perl كودىمۇ ۋاقىتلىق مۇھىتنى كۆرىدۇ. بۇ ھەر بىر فۇنكسىيە ئۈچۈن شەخسىي ئىسپات ئامبىرى ئەمەس.
تاللانغان خېرىدار ئۈچۈن مىراس ئېلىنغان چوڭ ھەرپ ۋە ئايلىنىپ ئۆتۈش ئۆزگەرگۈچىلىرىنى تەكشۈرۈڭ. قايسى كىرگۈزۈشلەرنى ئىشلىتىشنى چۈشۈرگۈچ بەلگىلەيدۇ. پروكسى تەڭشىكى جەرياننىڭ ئىشلەتكۈچى كىملىكىنى ئۆزگەرتمەيدۇ ۋە پەقەت مىراس ئېلىش ئۈچۈن ئايرىم root shell تەلەپ قىلمايدۇ.