Shell anak tidak dapat mengekspor proxy kembali ke Perl
Setel ENV Perl secara langsung dan batasi variabel proxy dengan local di sekitar satu pemanggilan anak agar nilai aslinya kembali sesudahnya.
Perintah backtick yang berisi export hanya mengubah shell yang dibuat untuk perintah itu. Saat shell keluar, proses Perl induk masih memiliki lingkungan sebelumnya.
Setel hash lingkungan Perl sebagai gantinya. local dapat menahan perubahan dalam satu blok:
{
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;
}
Anak mewarisi nilai yang dilokalkan. Untuk unduhan HTTP publik, titik akhir dari daftar proxy HTTP dapat memasok nilai URL tersebut. Saat blok berakhir, Perl memulihkan entri sebelumnya, termasuk ketiadaan sebelumnya. Hasil system yang ditampilkan adalah status proses Perl, bukan kode respons HTTP yang didekode.
local memiliki cakupan dinamis: kode Perl lain yang dipanggil di dalam blok itu juga melihat lingkungan sementara. Ini bukan penyimpanan kredensial privat per fungsi.
Tinjau variabel warisan huruf besar dan variabel bypass untuk klien yang dipilih. Pengunduh yang memutuskan input mana yang dipakai. Pengaturan proxy juga tidak mengubah identitas pengguna proses dan tidak memerlukan shell root terpisah hanya agar diwarisi.