Exportin sisältävä backtick-komento muuttaa vain sitä kuorta, joka luotiin kyseistä komentoa varten. Kun kuori päättyy, ylemmällä Perl-prosessilla on yhä aiempi ympäristönsä.

Aseta sen sijaan Perlin ympäristöhash. local voi pitää muutoksen yhden lohkon sisällä:

{
    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;
}

Lapsi perii lokalismetut arvot. Julkiseen HTTP-lataukseen HTTP-välityspalvelinluettelon päätepiste voi tarjota nuo URL-arvot. Kun lohko päättyy, Perl palauttaa aiemmat merkinnät, myös niiden aiemman puuttumisen. Näytetty system-tulos on Perlin prosessin tila, ei purettu HTTP-vastauskoodi.

local on dynaamisesti rajattu: muukin saman lohkon sisällä kutsuttu Perl-koodi näkee väliaikaisen ympäristön. Se ei ole funktiokohtainen yksityinen tunnistetietovarasto.

Tarkista valitun asiakasohjelman perityt isoilla kirjaimilla kirjoitetut ja ohitusmuuttujat. Lataaja päättää, mitä syötteitä se käyttää. Välityspalvelinasetus ei myöskään muuta prosessin käyttäjätunnistetta eikä vaadi erillistä root-kuorta vain periytymistä varten.

Aiheeseen liittyvät artikkelit