Um shell filho não pode exportar um proxy de volta para o Perl
Defina o ENV do Perl diretamente e localize as variáveis de proxy em torno de uma única chamada filha para que os valores originais voltem depois.
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.