Каманда з backtick, якая змяшчае export, змяняе толькі абалонку, створаную для гэтай каманды. Калі абалонка завяршаецца, бацькоўскі працэс Perl па-ранейшаму мае сваё папярэдняе асяроддзе.

Задайце замест гэтага хэш асяроддзя Perl. local можа ўтрымаць змену ў межах аднаго блока:

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

Дзіцячы працэс атрымлівае лакалізаваныя значэнні. Для публічнага HTTP-спампоўвання канцавая кропка з спісу HTTP-проксі можа даць гэтыя значэнні URL. Калі блок завяршаецца, Perl аднаўляе папярэднія запісы, уключаючы іх ранейшую адсутнасць. Паказаны вынік system — гэта статус працэсу Perl, а не расшыфраваны код адказу HTTP.

local мае дынамічную вобласць бачнасці: іншы код Perl, выкліканы ўнутры гэтага блока, таксама бачыць часовае асяроддзе. Гэта не прыватнае сховішча ўліковых даных для кожнай функцыі.

Праверце атрыманыя ў спадчыну зменныя ў верхнім рэгістры і зменныя абыходу для абранага кліента. Якія ўваходныя даныя выкарыстоўваць, вырашае спампоўнік. Налада проксі таксама не змяняе ідэнтычнасць карыстальніка працэсу і не патрабуе асобнай абалонкі root толькі дзеля атрымання ў спадчыну.

Падобныя артыкулы