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.

Gerelateerde artikelen