Как мой Perl-скрипт узнает, что он работает под Win64? - PullRequest
3 голосов
/ 18 сентября 2009

Как я могу заставить мой Perl-скрипт обнаруживать, что он работает на 64-битной Windows-машине, даже если это 32-битный Perl?

Ответы [ 5 ]

6 голосов
/ 18 сентября 2009

См. этот вопрос . Вы проверяете переменную окружения %PROCESSOR_ARCHITECTURE%.

4 голосов
/ 19 сентября 2009

Спасибо, Бен С.

По ссылке в вопросе, на которую вы ссылались: Блог MSDN о том, как определить битность процесса

Получил следующий код: print "WIN64 ?: $ ENV {PROCESSOR_ARCHITECTURE} \ n"; print "WIN64 ?: $ ENV {PROCESSOR_ARCHITEW6432} \ n";

И следующий вывод (32-битный Perl на xp64)

WIN64 ?: x86

WIN64 ?: AMD64

Похоже, если вы используете 32-битное приложение с 64-битным выигрышем, вам нужно ссылаться на PROCESSOR_ARCHITEW6432.

3 голосов
/ 20 января 2011
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

1 голос
/ 22 сентября 2009

Другим методом, хотя и более сложным, будет проверка функции Windows API IsWow64Process. Пример того, как это сделать (в Delphi), дан в ответе на на этот вопрос .

0 голосов
/ 24 января 2014
    my @CPUIdentifierArray = split ' ', $ENV{PROCESSOR_IDENTIFIER};
    my %ArcHash        = ('x86' => 32, 'AMD64' => 64, 'Intel64' => 64);
    my $Arch           = $ArcHash{$CPUIdentifierArray[0]};

Возвращает 32 или 64

...