プロが教える店舗&オフィスのセキュリティ対策術

あるPathを環境変数として設定したい場合、
例)TNS_ADMIN=D:\Test\exe

たとえばMS-DOSなら、
set TNS_ADMIN=D:\Test\exe
と設定しますよね。

これと同じことをPerlでどうやればいいのかというのが質問です。

ENVモジュールを使って、
$ENV{TNS_ADMIN}=D:\Test\exe
としてみたものの、Perlを実行した後に確認してみるとセットされていないようでした。
(確認方法はPerlを実行したDOSプロンプトにて"set"を実行)

よろしくお願いします。

A 回答 (4件)

>>破棄された後に確認しても、わかりません。


>どうにかその環境変数がセットされていることを確認する方法ってないのでしょうか?

perlで子プロセスを起動すれば確認できます。

例えば、NT系のOSであれば...

次のスクリプトを用意。
#!c:\perl\bin\perl.exe
$ENV{"TNS_ADMIN"}="D:\\Test\\exe";
system("cmd");

それを実行すると、コマンドプロセッサが表示されるので、
set[return]
すれば、子プロセスの環境変数が確認できます。
確認後、exit[return]すると、子プロセスが終了するので、
親プロセスたるperlも終了する。
    • good
    • 0

>ENVモジュールを使って、


>$ENV{TNS_ADMIN}=D:\Test\exe
としてみたものの、Perlを実行した後に確認してみるとセットされていないようでした。
>(確認方法はPerlを実行したDOSプロンプトにて"set"を実行)

perl自身のプロセスに対しては有効ですが、perlが終了するときに、
破棄されますので、
破棄された後に確認しても、わかりません。

$ENV{TNS_ADMIN}="D:\\Test\\exe";

するのであれば、オラクル関係のプロダクトを使うための前処理だと思いますが、
そのperl上で、オラクル関係のプロダクトを起動するならば、それに対しては
有効ですので、目的は達成できるのではないかと思います。

この回答への補足

返信ありがとうございます。

>破棄された後に確認しても、わかりません。

どうにかその環境変数がセットされていることを確認する方法ってないのでしょうか?

補足日時:2005/06/17 11:31
    • good
    • 0

Perlに限らず、起動したプロセス(アプリケーション)は、親の環境を引継ぎますが、実行中の環境は、いわばコピーなので、親の環境を直接変更することはできません。

    • good
    • 0

無理です.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!