Een kind-shell kan een proxy niet terug naar Perl exporteren
Stel de ENV van Perl rechtstreeks in en lokaliseer proxyvariabelen met local rond één kindaanroep, zodat de oorspronkelijke waarden daarna terugkeren.
Een backtick-opdracht met export wijzigt alleen de shell die voor die opdracht is gemaakt. Wanneer de shell eindigt, heeft het bovenliggende Perl-proces nog steeds zijn vorige omgeving.
Stel in plaats daarvan de omgevingshash van Perl in. local kan de wijziging binnen één blok houden:
{
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;
}
Het kind erft de gelokaliseerde waarden. Voor een openbare HTTP-download kan een eindpunt uit de HTTP-proxylijst die URL-waarden leveren. Wanneer het blok eindigt, herstelt Perl de vorige vermeldingen, inclusief hun eerdere afwezigheid. Het getoonde system-resultaat is de processtatus van Perl, geen gedecodeerde HTTP-responscode.
local heeft dynamisch bereik: andere Perl-code die binnen dat blok wordt aangeroepen, ziet de tijdelijke omgeving ook. Het is geen privéopslag voor inloggegevens per functie.
Controleer de geërfde hoofdletter- en bypass-variabelen voor de gekozen client. De downloader bepaalt welke invoer hij gebruikt. Een proxyinstelling verandert ook niet de gebruikersidentiteit van het proces en vereist geen aparte root-shell alleen om te worden geërfd.