Um comando com backtick que contém export altera apenas o shell criado para esse comando. Quando o shell termina, o processo Perl pai ainda mantém o ambiente anterior.

Defina, em vez disso, o hash de ambiente do Perl. local pode manter a alteração dentro de um bloco:

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

O filho herda os valores localizados. Para um download HTTP público, um endpoint da lista de proxies HTTP pode fornecer esses valores de URL. Quando o bloco termina, o Perl restaura as entradas anteriores, incluindo a ausência prévia delas. O resultado de system exibido é o status do processo do Perl, não um código de resposta HTTP decodificado.

local tem escopo dinâmico: outro código Perl chamado dentro desse bloco também vê o ambiente temporário. Não é um armazém privado de credenciais por função.

Revise as variáveis herdadas em maiúsculas e de bypass para o cliente escolhido. É o downloader que decide quais entradas consome. Uma configuração de proxy também não altera a identidade de usuário do processo nem exige um shell root separado só para ser herdada.

Artigos relacionados