2016-05-03 4 views
-1

私はPerlバージョン5.22を使用していますが、システム関数を使用してPerlスクリプトを使用して環境変数を設定しようとしています。 しかし、SETコマンドが機能していません。 私はあなたが構文エラーをクリーンアップすると仮定このPerlでSETコマンドを実行しています

my $return_val = system(" SET D:\Path\Folder "); 
the return_val returns value 256. 
+0

実行しようとしているコマンドに構文エラーがあります。 'set'は、設定する変数名とそれを設定する値を等号で区切って指定する必要があります。 – tripleee

答えて

0

のように使用しています、あなたはまだあなたがどのように環境変数誤解するように見える問題とsystemコマンドの仕事を持っています。

  • 環境変数は、生成された子プロセスに渡されるプロセスレベルの値です。彼らは子供から親に渡されません。

  • systemコマンドは、子プロセスが何らかの作業を行うようにします。

あなたがここに持っている問題

はその子シェルは&パスがバックのperlに制御死ぬときに、子シェルで環境変数を設定しても、環境変数がそれで死亡したということです。

  • あなたはPerlが%ENVハッシュを使用してに見て、後の子プロセスに渡すことができます環境変数が必要な場合。

  • perlの親プロセスの環境に影響を与えたい場合は、親自身が処理できるシェルスクリプトやバッチファイルなどをビルドすることをお勧めします。

+0

実際には、環境や放送の変更メッセージをシステムに設定するためのWindows固有のAPI関数があり、perlから独立して生成された他のプロセスもこれらの変更を参照します。私はCPAN上でWin32 :: Envと呼ばれる小さなモジュールをこれらの呼び出しのための薄いラッパーで作成しましたが、**今は動作しません**、時間があるときに最小限の労力で修正できます。それまでは、人々はソースを確認して自分の解決策を公開することができます。 –

関連する問題