Un shell copil nu poate exporta un proxy înapoi în Perl
Setați ENV-ul Perl direct și limitați variabilele de proxy cu local în jurul unei singure apelări copil, pentru ca valorile originale să revină după aceea.
O comandă cu backtick care conține export schimbă doar shell-ul creat pentru acea comandă. Când shell-ul se termină, procesul Perl părinte are în continuare mediul precedent.
Setați în schimb hash-ul de mediu al Perl. local poate păstra modificarea într-un singur bloc:
{
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;
}
Copilul moștenește valorile localizate. Pentru o descărcare HTTP publică, un punct final din lista de proxy HTTP poate furniza acele valori URL. Când blocul se termină, Perl restaurează intrările anterioare, inclusiv absența lor anterioară. Rezultatul system afișat este starea procesului Perl, nu un cod de răspuns HTTP decodat.
local are domeniu dinamic: alt cod Perl apelat în acel bloc vede și el mediul temporar. Nu este un depozit privat de acreditări pe funcție.
Revizuiți variabilele moștenite cu majuscule și variabilele de ocolire pentru clientul ales. Descărcătorul decide ce intrări consumă. O setare de proxy, de asemenea, nu schimbă identitatea de utilizator a procesului și nu necesită un shell root separat doar pentru a fi moștenită.