ကလေး shell သည် ပရောက်စီကို Perl သို့ ပြန်တင်ပို့နိုင်မည်မဟုတ်ပါ
Perl ၏ ENV ကို တိုက်ရိုက်သတ်မှတ်ပြီး ကလေးခေါ်ဆိုမှုတစ်ခုကို ပတ်ပတ်လည် local ဖြင့် ပရောက်စီကိန်းရှင်များကို ကန့်သတ်ပါ၊ ထို့နောက် မူလတန်ဖိုးများ ပြန်လာပါလိမ့်မည်။
export ပါဝင်သော backtick အမိန့်သည် ထိုအမိန့်အတွက် ဖန်တီးထားသော shell ကိုသာ ပြောင်းလဲသည်။ shell ထွက်သွားသောအခါ မိခင် Perl လုပ်ငန်းစဉ်တွင် ၎င်း၏ ယခင်ပတ်ဝန်းကျင် ရှိနေဆဲဖြစ်သည်။
အစား Perl ၏ ပတ်ဝန်းကျင် hash ကို သတ်မှတ်ပါ။ local သည် အပြောင်းအလဲကို block တစ်ခုအတွင်း ထိန်းထားနိုင်သည်။
{
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;
}
ကလေးသည် local ပြုလုပ်ထားသော တန်ဖိုးများကို အမွေဆက်ခံသည်။ အများသူငှာ HTTP ဒေါင်းလုဒ်အတွက် HTTP ပရောက်စီစာရင်းမှ အဆုံးမှတ်တစ်ခုက ထို URL တန်ဖိုးများကို ပေးနိုင်သည်။ block ပြီးဆုံးသောအခါ Perl သည် ယခင်ထည့်သွင်းချက်များကို ၎င်းတို့ ယခင်မရှိခဲ့သည့် အခြေအနေအပါအဝင် ပြန်လည်ထူထောင်သည်။ ပြသထားသော system ရလဒ်သည် Perl ၏ လုပ်ငန်းစဉ်အခြေအနေဖြစ်ပြီး ကုဒ်ဖွင့်ထားသော HTTP တုံ့ပြန်မှုကုဒ် မဟုတ်ပါ။
local သည် ရွေ့လျားသော နယ်ပယ်ရှိသည်။ ထို block အတွင်း ခေါ်ယူသော အခြား Perl ကုဒ်သည်လည်း ယာယီပတ်ဝန်းကျင်ကို မြင်နိုင်သည်။ ၎င်းသည် လုပ်ဆောင်ချက်တစ်ခုစီအတွက် သီးသန့် အထောက်အထား သိုလှောင်ရာ မဟုတ်ပါ။
ရွေးချယ်ထားသော client အတွက် အမွေဆက်ခံသော စာလုံးကြီးနှင့် ကျော်ဖြတ်ကိန်းရှင်များကို ပြန်လည်စစ်ဆေးပါ။ မည်သည့် ထည့်သွင်းချက်များကို အသုံးပြုမည်ကို ဒေါင်းလုဒ်အစီအစဉ်က ဆုံးဖြတ်သည်။ ပရောက်စီသတ်မှတ်ချက်သည် လုပ်ငန်းစဉ်၏ အသုံးပြုသူ အထောက်အထားကို မပြောင်းလဲသလို အမွေဆက်ခံရန်အတွက်သာ သီးခြား root shell ကိုလည်း မလိုအပ်ပါ။