Mae gorchymyn backtick sy'n cynnwys export yn newid y gragen a grëwyd ar gyfer y gorchymyn hwnnw yn unig. Pan fydd y gragen yn gorffen, mae proses Perl rhiant yn dal i gadw ei hamgylchedd blaenorol.

Gosodwch hash amgylchedd Perl yn lle hynny. Gall local gadw'r newid o fewn un bloc:

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

Mae'r plentyn yn etifeddu'r gwerthoedd a leolwyd. Ar gyfer lawrlwytho HTTP cyhoeddus, gall pwynt terfyn o'r rhestr procsi HTTP ddarparu'r gwerthoedd URL hynny. Pan fydd y bloc yn gorffen, mae Perl yn adfer y cofnodion blaenorol, gan gynnwys eu habsenoldeb blaenorol. Canlyniad system a ddangosir yw statws proses Perl, nid cod ymateb HTTP wedi'i ddadgodio.

Mae gan local gwmpas deinamig: gall cod Perl arall a alwyd o fewn y bloc hwnnw weld yr amgylchedd dros dro hefyd. Nid yw'n storfa gyfrinachol breifat fesul swyddogaeth.

Adolygwch y newidynnau etifeddol priflythrennau a'r newidynnau osgoi ar gyfer y cleient a ddewiswyd. Y lawrlwythwr sy'n penderfynu pa fewnbynnau y mae'n eu defnyddio. Nid yw gosodiad procsi ychwaith yn newid hunaniaeth defnyddiwr y broses nac yn mynnu cragen root ar wahân dim ond i'w hetifeddu.

Erthyglau cysylltiedig