在Perl中优雅地确定系统架构

时间:2010-07-11 17:59:21

标签: perl architecture

我正在寻找一种简单的方法来确定系统是否是Perl 5中的32位或64位。我已经向后和向前阅读了perlvar手册页,并且没有发现变量包含系统的CPU架构(Perl编译的CPU架构将足够接近)。这是我最接近的:

chomp (my $arch = `uname -m`);

我想知道是否有更优雅的方法来确定这一点;我讨厌依赖反引号表达式,因为它们都是瓶颈,往往是不安全的,并且经常(特别是这个例子)打破了跨平台的兼容性。 Perl没有理由不应该提供这些信息。

4 个答案:

答案 0 :(得分:10)

请参阅Config模块。

也许检查是否设置$Config{'archname64'}就足够了。

答案 1 :(得分:7)

Sys::Info::OS->bitness方法将确定您操作系统的“位数”。

答案 2 :(得分:2)

也许尝试使用CPAN模块,例如https://metacpan.org/pod/Devel::CheckOS

答案 3 :(得分:0)

您可以使用提供类似于uname实用程序的uname函数的POSIX模块。

use POSIX ();

my ($sysname, $nodename, $release, $version, $machine) = POSIX::uname;

或者,在您的情况下:

my $arch = (POSIX::uname)[4];