1System::Info(3) User Contributed Perl Documentation System::Info(3)
2
3
4
6 System::Info - Factory for system specific information objects
7
9 use System::Info;
10
11 my $si = System::Info->new;
12
13 printf "Hostname: %s\n", $si->host;
14 printf "Number of CPU's: %s\n", $si->ncpu;
15 printf "Processor type: %s\n", $si->cpu_type; # short
16 printf "Processor description: %s\n", $si->cpu; # long
17 printf "OS and version: %s\n", $si->os;
18
19 or
20
21 use System::Info qw( sysinfo );
22 printf "[%s]\n", sysinfo ();
23
24 or
25
26 $ perl -MSystem::Info=si_uname -le print+si_uname
27
29 System::Info tries to present system-related information, like number
30 of CPU's, architecture, OS and release related information in a system-
31 independent way. This releases the user of this module of the need to
32 know if the information comes from Windows, Linux, HP-UX, AIX, Solaris,
33 Irix, or VMS, and if the architecture is i386, x64, pa-risc2, or arm.
34
36 System::Info->new
37 Factory method, with fallback to the information in "POSIX::uname ()".
38
39 sysinfo
40 "sysinfo" returns a string with "host", "os" and "cpu_type".
41
42 sysinfo_hash
43 "sysinfo_hash" returns a hash reference with basic system information,
44 like:
45
46 { cpu => 'Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz (GenuineIntel 2700MHz)',
47 cpu_count => '1 [8 cores]',
48 cpu_cores => 8,
49 cpu_type => 'x86_64',
50 distro => 'openSUSE Tumbleweed 20171030',
51 hostname => 'foobar',
52 os => 'linux - 4.13.10-1-default [openSUSE Tumbleweed 20171030]',
53 osname => 'Linux',
54 osvers => '4.13.10-1-default'
55 }
56
57 si_uname (@args)
58 This class gathers most of the uname(1) info, make a comparable
59 version. Takes almost the same arguments:
60
61 a for all (can be omitted)
62 n for nodename
63 s for os name and version
64 m for cpu name
65 c for cpu count
66 p for cpu_type
67
69 There are more modules that provide system and/or architectural
70 information.
71
72 Where System::Info aims at returning the information that is useful for
73 bug reports, some other modules focus on a single aspect (possibly with
74 way more variables and methods than System::Info does supports), or are
75 limited to use on a specific architecture, like Windows or Linux.
76
77 Here are some of the alternatives and how to replace that code with
78 what System::Info offers. Not all returned values will be exactly the
79 same.
80
81 Sys::Hostname
82 use Sys::Hostname;
83 say "Hostname: ", hostname;
84
85 ->
86
87 use System::Info;
88 my $si = System::Info->new;
89 say "Hostname: ", $si->host;
90
91 Sys::Hostname is a CORE module, and will always be available.
92
93 Unix::Processors
94 use Unix::Processors;
95 my $up = Unix::Processors->new;
96 say "CPU type : ", $up->processors->[0]->type;
97 say "CPU count: ", $up->max_physical;
98 say "CPU cores: ", $up->max_online;
99 say "CPU speed: ", $up->max_clock;
100
101 ->
102
103 use System::Info;
104 my $si = System::Info->new;
105 say "CPU type : ", $si->cpu;
106 say "CPU count: ", $si->ncpu;
107 say "CPU cores: ", $si->ncore;
108 say "CPU speed: ", $si->cpu =~ s{^.*\b([0-9.]+)\s*[A-Z]Hz.*}{$1}r;
109
110 The number reported by max_physical is inaccurate for modern CPU's
111
112 Sys::Info
113 Sys::Info has a somewhat rigid configuration, which causes it to fail
114 installation on e.g. (modern versions of) CentOS and openSUSE
115 Tumbleweed.
116
117 It aims at returning a complete set of information, but as I cannot
118 install it on openSUSE Tumbleweed, I cannot test it and show the
119 analogies.
120
121 Sys::CPU
122 use Sys::CPU;
123 say "CPU type : ", Sys::CPU::cpu_type ();
124 say "CPU count: ", Sys::CPU::cpu_count ();
125 say "CPU speed: ", Sys::CPU::cpu_clock ();
126
127 ->
128
129 use System::Info;
130 my $si = System::Info->new;
131 say "CPU type : ", $si->get_cpu; # or ->cpu
132 say "CPU count: ", $si->get_core_count; # or ->ncore
133 say "CPU speed: ", $si->get_cpu =~ s{^.*\b([0-9.]+)\s*[A-Z]Hz.*}{$1}r;
134
135 The speed reported by Sys::CPU is the current speed, and it will change
136 from call to call. YMMV.
137
138 Sys::CPU is not available on CPAN anymore, but you can still get is
139 from BackPAN.
140
142 (c) 2016-2019, Abe Timmerman & H.Merijn Brand All rights reserved.
143
144 With contributions from Jarkko Hietaniemi, Campo Weijerman, Alan
145 Burlison, Allen Smith, Alain Barbet, Dominic Dunlop, Rich Rauenzahn,
146 David Cantrell.
147
148 This library is free software; you can redistribute it and/or modify it
149 under the same terms as Perl itself.
150
151 See:
152
153 · <http://www.perl.com/perl/misc/Artistic.html>
154
155 · <http://www.gnu.org/copyleft/gpl.html>
156
157 This program is distributed in the hope that it will be useful, but
158 WITHOUT ANY WARRANTY; without even the implied warranty of
159 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
160
161
162
163perl v5.32.0 2020-07-28 System::Info(3)