Et barneskall kan ikke eksportere en proxy tilbake til Perl
Sett Perls ENV direkte og lokaliser proxyvariabler rundt ett underordnet kall, slik at de opprinnelige verdiene kommer tilbake etterpå.
En backtick-kommando med export endrer bare skallet som ble opprettet for nettopp den kommandoen. Når skallet avsluttes, har den overordnede Perl-prosessen fortsatt sitt tidligere miljø.
Sett i stedet Perls miljøhash. local kan holde endringen innenfor én blokk:
{
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;
}
Barnet arver de lokaliserte verdiene. For en offentlig HTTP-nedlasting kan et endepunkt fra HTTP-proxylisten levere disse URL-verdiene. Når blokken slutter, gjenoppretter Perl de tidligere oppføringene, også deres tidligere fravær. Den viste system-utskriften er Perls prosessstatus, ikke en dekodet HTTP-svarkode.
local har dynamisk omfang: annen Perl-kode som kalles inni blokken, ser også det midlertidige miljøet. Det er ikke et privat påloggingslager per funksjon.
Gå gjennom arvede store bokstaver og bypass-variabler for den valgte klienten. Nedlasteren avgjør hvilke inndata den bruker. En proxyinnstilling endrer heller ikke prosessens brukeridentitet og krever ikke et eget root-skall bare for å bli arvet.