চাইল্ড শেল Perl-এ প্রক্সি ফিরিয়ে এক্সপোর্ট করতে পারে না
Perl-এর ENV সরাসরি সেট করুন এবং একটি চাইল্ড কলের চারপাশে local দিয়ে প্রক্সি ভেরিয়েবল সীমিত করুন, যাতে পরে আগের মান ফিরে আসে।
export থাকা backtick কমান্ড কেবল সেই কমান্ডের জন্য তৈরি শেলটিকে বদলায়। শেলটি বেরিয়ে গেলে প্যারেন্ট Perl প্রসেসের আগের পরিবেশই থেকে যায়।
বরং Perl-এর এনভায়রনমেন্ট হ্যাশ সেট করুন। local পরিবর্তনটি একটি ব্লকের মধ্যে রাখতে পারে:
{
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 মান দিতে পারে। ব্লক শেষ হলে Perl আগের এন্ট্রিগুলো ফিরিয়ে দেয়, তাদের আগের অনুপস্থিতিসহ। দেখানো system ফলাফলটি Perl-এর প্রসেস স্ট্যাটাস, ডিকোড করা HTTP রেসপন্স কোড নয়।
local ডায়নামিক স্কোপযুক্ত: ওই ব্লকের ভিতরে ডাকা অন্য Perl কোডও অস্থায়ী পরিবেশটি দেখতে পায়। এটি প্রতি ফাংশনের জন্য আলাদা গোপন তথ্যভান্ডার নয়।
নির্বাচিত ক্লায়েন্টের জন্য উত্তরাধিকারসূত্রে পাওয়া বড় হাতের ও বাইপাস ভেরিয়েবল দেখে নিন। কোন ইনপুট ব্যবহার হবে তা ডাউনলোডারই ঠিক করে। প্রক্সি সেটিং প্রসেসের ব্যবহারকারী পরিচয়ও বদলায় না এবং শুধু উত্তরাধিকার পাওয়ার জন্য আলাদা root শেলেরও দরকার নেই।