A gyermekhéj nem tud proxy-t visszaexportálni a Perlbe
Állítsa be közvetlenül a Perl ENV-jét, és lokalizálja a proxyváltozókat egyetlen gyermekhívás körül local-lal, hogy az eredeti értékek utána visszatérjenek.
Az exportot tartalmazó backtick-parancs csak az adott parancshoz létrehozott héjat módosítja. Amikor a héj kilép, a szülő Perl-folyamatnak továbbra is a korábbi környezete van.
Állítsa be helyette a Perl környezeti hash-ét. A local a módosítást egy blokkon belül tarthatja:
{
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;
}
A gyermek örökli a lokalizált értékeket. Nyilvános HTTP-letöltéshez a HTTP-proxylistából származó végpont szolgáltathatja ezeket az URL-értékeket. Amikor a blokk véget ér, a Perl visszaállítja a korábbi bejegyzéseket, beleértve azok korábbi hiányát is. A megjelenített system-eredmény a Perl folyamatállapota, nem egy dekódolt HTTP-válaszkód.
A local dinamikus hatókörű: a blokkon belül meghívott más Perl-kód is látja az ideiglenes környezetet. Ez nem függvényenkénti privát hitelesítőadat-tár.
Tekintse át az örökölt nagybetűs és megkerülő változókat a kiválasztott klienshez. Hogy mely bemeneteket használja, arról a letöltő dönt. A proxybeállítás sem változtatja meg a folyamat felhasználói identitását, és nem igényel külön root héjat csak azért, hogy öröklődjön.