Shell anak tidak boleh mengeksport proksi kembali ke Perl
Tetapkan ENV Perl secara langsung dan hadkan pemboleh ubah proksi dengan local di sekeliling satu panggilan anak supaya nilai asal kembali selepas itu.
Perintah backtick yang mengandungi export hanya mengubah shell yang dicipta untuk perintah itu. Apabila shell keluar, proses Perl induk masih mempunyai persekitaran sebelumnya.
Tetapkan hash persekitaran Perl sebagai gantinya. local boleh mengekalkan 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 disetempatkan. Untuk muat turun HTTP awam, titik akhir daripada senarai proksi HTTP boleh membekalkan nilai URL itu. Apabila blok tamat, Perl memulihkan entri sebelumnya, termasuk ketiadaan sebelumnya. Hasil system yang dipaparkan ialah status proses Perl, bukan kod respons HTTP yang dinyahkod.
local mempunyai skop dinamik: kod Perl lain yang dipanggil dalam blok itu juga melihat persekitaran sementara. Ia bukan storan kelayakan peribadi bagi setiap fungsi.
Semak pemboleh ubah warisan huruf besar dan pemboleh ubah pintasan untuk klien yang dipilih. Pemuat turun yang menentukan input mana yang digunakan. Tetapan proksi juga tidak mengubah identiti pengguna proses dan tidak memerlukan shell root berasingan hanya untuk diwarisi.