如何让我的Perl脚本检测到它在64位Windows机器上运行,即使它是32位perl?
答案 0 :(得分:6)
见this question。您检查%PROCESSOR_ARCHITECTURE%
环境变量。
答案 1 :(得分:4)
感谢Ben S.
从您关联的问题中的链接:msdn blog on how to dectect process bitness
产生以下代码: 打印“WIN64?:$ ENV {PROCESSOR_ARCHITECTURE} \ n”; 打印“WIN64?:$ ENV {PROCESSOR_ARCHITEW6432} \ n”;
以下输出(xp64上的32位perl)
WIN64?:x86
WIN64?:AMD64
如果您在64位获胜时运行32位应用程序,则需要参考PROCESSOR_ARCHITEW6432。
答案 2 :(得分:3)
if (($ENV{'PROCESSOR_ARCHITECTURE'} eq "AMD64") or
($ENV{'PROCESSOR_ARCHITEW6432'} eq "AMD64")) {
$arch = "win64";
} else {
$arch = "win32";
}
参考: http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
答案 3 :(得分:1)
另一种方法,虽然涉及更多,但是要检查Windows API函数IsWow64Process
。在this question的答案中给出了如何执行此操作的示例(在Delphi中)。
答案 4 :(得分:0)
my @CPUIdentifierArray = split ' ', $ENV{PROCESSOR_IDENTIFIER};
my %ArcHash = ('x86' => 32, 'AMD64' => 64, 'Intel64' => 64);
my $Arch = $ArcHash{$CPUIdentifierArray[0]};
返回32或64