我正在寻找一种简单的方法来确定系统是否是Perl 5中的32位或64位。我已经向后和向前阅读了perlvar
手册页,并且没有发现变量包含系统的CPU架构(Perl编译的CPU架构将足够接近)。这是我最接近的:
chomp (my $arch = `uname -m`);
我想知道是否有更优雅的方法来确定这一点;我讨厌依赖反引号表达式,因为它们都是瓶颈,往往是不安全的,并且经常(特别是这个例子)打破了跨平台的兼容性。 Perl没有理由不应该提供这些信息。
答案 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];