在 Windows 上,如何检查我安装的 Perl 是 32 位还是 64 位?
如果您想检查它是使用 32 位整数还是 64 位整数,请使用以下命令:
perl -V:ivsize # use Config; say $Config{ivsize}
另请参阅:回答“MAX_INT 的 Perl 等价物是什么?”
如果你想检查它是使用32位指针还是64位指针,请使用以下命令:
perl -V:ptrsize # use Config; say $Config{ptrsize}
如果您想检查它是 32 位程序还是 64 位程序,请使用以下命令:
perl -V:archname # use Config; say $Config{archname}
x86_64
,则为64位进程。x86
(但不包含x86_64
),则为32位进程。该值也包含在
perl -v
的输出中。
注意:您不应该检查
use64bitint
或 use64bitall
,因为它们指示哪些参数传递给 Configure
,而不是提供有关实际使用的信息。
我正在阅读这个问题是为了询问 Perl 是否是 64 位编译的,而不是 Windows 或 CPU 是否是。
Perl 可以配置为使用不同程度的 64 位。您可以使用配置模块查找它。
要检查 Perl 是否编译为使用 64 位整数,您可以查看 Config 中的
use64bitint
条目。
use Config;
print $Config{use64bitint};
define
表示是。
还有...
use64bitall
意味着 Perl 将被编译为使用它可以使用的所有 64 位,包括 64 位指针,允许您访问超过 2 GB 的内存。ivsize
表示 Perl 将使用多少字节来存储整数,8 表示 64 位。ptrsize
是 Perl 将使用多少位来存储指针,这允许您每个进程使用超过 2 GB 的内存,8 表示 64 位。常见的配置变量及其值可以在
perl -V
中看到(注意大写的V)。它们的定义可以通过 perldoc Config
找到。
注意,无论您的操作系统或 CPU 是 32 位还是 64 位,您都可以将 Perl 编译为使用 64 位整数。在 32 位 CPU 上,Perl 将使用“整数”以外的类型来存储数字,可能是“长整数”。
log(~0 +1)/log(2)
之所以有效,是因为:
所以基本上这个命令命令 perl 来表示有多少位有它的 UINT_MAX。
$ perl -e "print log(~0 +1)/log(2)"
32
$ perl -V:archname
archname='MSWin32-x86-multi-thread';
只需检查版本/版本:
perl -v
我得到了:
This is perl, v5.8.8 built for msys-64int
Copyright 1987-2006, Larry Wall
...
考虑使用:
$width = ~0==2**32-1 ? 32:64;
只需使用
log(~0 +1)/log(2)
....