を参照して、親シェルのENVを変更することはできません、
system("setenv X1 /p/fsd")
がありますので、それが失敗しています
system("setenv", "X1", "/p/fsd")
に相当しますプログラム名はsetenv
です。この最適化が存在しない場合は、別の結果が得られます*。その場合には、
system("setenv X1 /p/fsd")
はsh
は何setenv
コマンドを持っていないので、どちらかを動作しません
system("sh", "-c", "setenv X1 /p/fsd")
に相当します。だからあなたは次の代わりに以下を実行することができます:
system("tcsh", "-c", "setenv X1 /p/fsd")
しかしそれは無意味です。シェルを作成し、その変数の1つを設定します。シェルは終了し、その変数は存在しなくなります。あなたはPerlとその子から見たenv VARを設定したい場合は
、単に は
local $ENV{X1} = "/p/fsd"; # Until end of scope
* —最適化されたコードが最適化されていないと異なる動作べきではありません
$ENV{X1} = "/p/fsd"; # Until end of program
または
使用しかし、最適化はあなたが得るエラーを変更するだけなので、それは受け入れられます。
[Perlスクリプトで環境変数を設定する](http://stackoverflow.com/questions/19192682/setting-an-environment-variable-through-a-perl-script) –