【Perl】【Windows】システム環境変数を取得できますか?


ActivePerl でWindowsのシステム環境変数を取得するにはどうすればよいのでしょうか?
CGIサーバの話ではありません。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/06/04 19:00:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:znz No.2

回答回数193ベストアンサー獲得回数25

ポイント100pt

Win32::OLEを使って取得できるようです。

Environment("SYSTEM")の代わりにEnvironment("USER")にすればユーザ環境変数になります。

#!/usr/bin/perl -w
use strict;
use Win32::OLE;
my $WshShell = Win32::OLE->CreateObject("WScript.Shell");
my $SysEnv = $WshShell->Environment("SYSTEM");
for my $value (in $SysEnv) {
    print "$value\n";
}
id:radio3

ありがとうございます!

バッチリでした。

2006/06/04 18:59:13

その他の回答1件)

id:dica33 No.1

回答回数37ベストアンサー獲得回数3

ポイント35pt

当方ActivePerlを入れてないので確認できていませんが、

http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/Env.htm...

こちらの方法で出来るのではないかと思います。

id:radio3

確認してませんが(^^;)

ありがとうございました!

2006/06/04 19:00:02
id:znz No.2

回答回数193ベストアンサー獲得回数25ここでベストアンサー

ポイント100pt

Win32::OLEを使って取得できるようです。

Environment("SYSTEM")の代わりにEnvironment("USER")にすればユーザ環境変数になります。

#!/usr/bin/perl -w
use strict;
use Win32::OLE;
my $WshShell = Win32::OLE->CreateObject("WScript.Shell");
my $SysEnv = $WshShell->Environment("SYSTEM");
for my $value (in $SysEnv) {
    print "$value\n";
}
id:radio3

ありがとうございます!

バッチリでした。

2006/06/04 18:59:13
  • id:villain
    そのまま、環境変数を格納している特殊変数%ENVで取得できますよ。

    print "$ENV{'PATH'}\n";
    print "$ENV{'TEMP'}\n";

    など。

    http://allabout.co.jp/internet/cgiperl/closeup/CU20041105A/index2.htm
  • id:znz
    Windowsの環境変数はいくつかあって、%ENVでアクセスできるのは、
    http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html
    の環境変数の種類の説明でいうプロセス環境変数なので、システム環境変数やユーザー環境変数とは別物です。
  • id:villain
    そうだったんですか。
    すみません。
    これでウォッチリストから消去しますのでこの後の返信はできません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません