क्योंकि वहाँ setenv X1 /p/fsd
में कोई भी विशेष वर्ण है,
system("setenv X1 /p/fsd")
system("setenv", "X1", "/p/fsd")
है क्योंकि यह असफल रहने के है के बराबर है setenv
नामक कोई प्रोग्राम नहीं है। यदि यह अनुकूलन मौजूद नहीं था, तो आपको एक अलग परिणाम मिलता है *। उस मामले में,
system("setenv X1 /p/fsd")
system("sh", "-c", "setenv X1 /p/fsd")
कि क्योंकि या तो sh
कोई setenv
आदेश है कार्य नहीं करेगा के बराबर होगा। तो आप इसके बजाय निम्नलिखित चला सकते हैं:
system("tcsh", "-c", "setenv X1 /p/fsd")
लेकिन यह व्यर्थ होगा। आप एक खोल बनायेंगे, इसके चरों में से एक सेट करें। फिर खोल निकलता है और इसके चर मौजूद हैं।
आप एक env var पर्ल और उसके बच्चों द्वारा देखा सेट करना चाहते हैं, तो बस
$ENV{X1} = "/p/fsd"; # Until end of program
या
local $ENV{X1} = "/p/fsd"; # Until end of scope
* — अनुकूलित कोड को अलग ढंग से unoptimised से व्यवहार नहीं करना चाहिए का उपयोग कोड, लेकिन ऑप्टिमाइज़ेशन केवल उस त्रुटि को बदलता है जो आपको मिलता है, यह स्वीकार्य है।
संभावित डुप्लिकेट [पर्ल स्क्रिप्ट के माध्यम से एक पर्यावरण चर सेट करना] (http://stackoverflow.com/questions/19192682/setting-an-environment-variable-through-a-perl-script) –