Mac::OSVersion - Get the Mac OS X or macOS system version
use Mac::OSVersion; my $version = Mac::OSVersion->version; # 10.4.11 my @version = Mac::OSVersion->version; # (10, 4, 11, 'Tiger', '8.10.1' ) my $name = Mac::OSVersion->name; # Tiger, etc. my $name = Mac::OSVersion->minor_to_name( 3 ); 'Panther'; my $major = Mac::OSVersion->major; # 10 of 10.4.11 my $minor = Mac::OSVersion->minor; # 4 or 10.4.11 my $point = Mac::OSVersion->point; # 11 of 10.4.11 my $build = Mac::OSVersion->build; # 8R2218 my $kernel = Mac::OSVersion->kernel; # 8.10.1
Extract the values for the various OS numbers (Mac OS version, build, kernel) using various methods. Methods may use other modules or external programs. So far this only works on the current machine.
I started this module with only Mac OS X in mind. Now that macOS 11 is on the way, I've bolted on a optional "major" argument to most methods. If you don't supply that argument, it defaults to "10" to get the same behavior as the Mac OS X world.
In scalar context, returns the numeric version of Mac OS X or macOS, e.g. 10.4.11.
In list context, returns the list of the major, minor, point, name, and kernel versions. Some methods may not return all values, but the values will always be in the same positions.
# 0 1 2 3 4 5 ( $major, $minor, $point, $name, $build, $kernel );
The available methods are list in "Ways of collecting info". Use the subroutine name as METHOD. For instance:
METHOD
my @list = Mac::OSVersion->version( 'gestalt' );
Returns the list of methods that version can use to do its work.
version
Returns the default major version, which is 10 for Mac OS X. This is a bit of a kludge because I didn't think about this module covering a future major version.
10
Returns true if the argument is a known major version number.
Returns the name of version number, e.g. 'Tiger' 10.4.
METHOD optionally specifies the method to use to get the answer. See version for the possible values.
Returns the name ( e.g. 'Tiger' ) for the given minor version number.
With major version 10:
0 Cheetah 1 Puma 2 Jaguar 3 Panther 4 Tiger 5 Leopard 6 Snow Leopard 7 Lion 8 Mountain Lion 9 Mavericks 10 Yosemite 11 El Capitan 12 Sierra 13 High Sierra 14 Mojave 15 Catalina
With major versions after 10, all point releases have the same identifier:
11 Big Sur 12 Monterey 13 Ventura 14 Sonoma
Returns a list of the minor version numbers. This takes an optional major version argument, which is 10 by default.
Returns a list of the names of the minor versions ( e.g. qw(Cheetah Puma ... )). This takes an optional major version argument, which is 10 by default.
qw(Cheetah Puma ... )
Returns the major version number, e.g. 10 of 10.4.11.
METHOD optionally specifies the method to use to get the answer. See version for the possible values. Not all methods can return an answer.
Returns the major version number, e.g. 4 or 10.4.11.
Returns the point release version number, e.g. 11 or 10.4.11.
Returns the kernel version number, e.g. 8.10.1.
There isn't a single way to get all of the info that version wants to provide, and some of the ways might give different answers for the same installation. Not all methods can return an answer. Here's a table of which methods return what values:
default system_profiler sw_vers gestalt uname major x x x x minor x x x x point x x x x name x x x x build x x x kernel x x x
Uses several methods to collect information.
Only uses gestaltSystemVersion from Mac::Gestalt to get the major, minor, point, and name fields. This has the curious bug that the point release number will not be greater than 9.
gestaltSystemVersion
Mac::Gestalt
In scalar context, returns the version as "10.m.p". In list context, returns the same list as version, although some fields may be missing.
Only uses /usr/bin/sw_vers to get the major, minor, point, build, and name fields.
/usr/bin/sw_vers
Only uses /usr/sbin/system_profiler to get the major, minor, point, build, and name fields.
/usr/sbin/system_profiler
Software:
System Software Overview: System Version: Mac OS X 10.4.10 (8R2218) Kernel Version: Darwin 8.10.1 Boot Volume: Tiger Computer Name: macbookpro User Name: brian d foy (brian)
Only uses uname -a to get the kernel field.
uname -a
In scalar context, returns the kernel version. In list context, returns the same list as version, although some fields may be missing.
* Specify a remote machine
/usr/bin/uname
This module is in Github
https://github.com/briandfoy/mac-osversion
brian d foy, <bdfoy@cpan.org>
<bdfoy@cpan.org>
Copyright © 2007-2023, brian d foy <bdfoy@cpan.org>. All rights reserved.
You may redistribute this under the terms of the Artistic License 2.0.
To install Mac::OSVersion, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mac::OSVersion
CPAN shell
perl -MCPAN -e shell install Mac::OSVersion
For more information on module installation, please visit the detailed CPAN module installation guide.