Sys :: Info выглядит многообещающе:
#!/usr/bin/perl
use strict; use warnings;
use Sys::Info;
my $info = Sys::Info->new;
my $cpu = $info->device('CPU');
printf "%s (%s bit)\n", scalar $cpu->identify, $cpu->bitness;
my $os = $info->os;
printf "%s (%s bit)\n", $os->name(long => 1), $os->bitness;
Выход:
C:\Temp> t
Genuine Intel(R) CPU T2300 @ 1.66GHz (64 bit)
Windows XP Service Pack 3 build 2600 (32 bit)
Обратите внимание, что неправильно идентифицирует ЦП моего ноутбука как 64-битный (см. Процессор Intel® Core ™ Duo T2300 - подан отчет об ошибке).