Powłoka podrzędna nie może wyeksportować proxy z powrotem do Perla
Ustaw ENV Perla bezpośrednio i ogranicz zmienne proxy za pomocą local wokół jednego wywołania podrzędnego, aby pierwotne wartości wróciły później.
Polecenie z backtickiem zawierające export zmienia tylko powłokę utworzoną dla tego polecenia. Gdy powłoka się kończy, nadrzędny proces Perla nadal ma swoje poprzednie środowisko.
Zamiast tego ustaw hash środowiska Perla. local może utrzymać zmianę w obrębie jednego bloku:
{
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;
}
Proces podrzędny dziedziczy zlokalizowane wartości. W przypadku publicznego pobierania HTTP punkt końcowy z listy proxy HTTP może dostarczyć te wartości URL. Gdy blok się kończy, Perl przywraca poprzednie wpisy, łącznie z ich wcześniejszą nieobecnością. Wyświetlany wynik system to status procesu Perla, a nie zdekodowany kod odpowiedzi HTTP.
local ma dynamiczny zasięg: inny kod Perla wywołany wewnątrz tego bloku również widzi tymczasowe środowisko. Nie jest to prywatny magazyn poświadczeń na funkcję.
Przejrzyj dziedziczone zmienne wielkimi literami i zmienne obejścia dla wybranego klienta. To downloader decyduje, które dane wejściowe zużywa. Ustawienie proxy również nie zmienia tożsamości użytkownika procesu ani nie wymaga osobnej powłoki root tylko po to, by zostać odziedziczonym.