Elegantly Determining System Architecture Within Perl
I'm looking for a simple way to determine whether a 开发者_如何学运维system is 32- or 64-bit from within Perl 5. I have read the perlvar
manual page backwards and forwards, and have not discovered a variable that contains the system's CPU architecture (the CPU architecture Perl was compiled for will come close enough). This is the closest I have come:
chomp (my $arch = `uname -m`);
I was wondering if there was a more elegant way of determining this; I hate relying on backtick expressions, as they are both a bottleneck, tend to be insecure, and often (this example especially) break cross-platform compatibility. There is no reason Perl shouldn't already have this information available.
See the Config
module.
Maybe checking whether $Config{'archname64'}
is set would be sufficient.
Sys::Info::OS->bitness
method will determine "bitness" of your OS.
Maybe try a CPAN module such as https://metacpan.org/pod/Devel::CheckOS .
You could use the POSIX module which provides a uname
function similar to the uname utility.
use POSIX ();
my ($sysname, $nodename, $release, $version, $machine) = POSIX::uname;
Or, in your case :
my $arch = (POSIX::uname)[4];
精彩评论