Mac::OSVersion(3)

NAME
Mac::OSVersion - Get the Mac OS X or macOS system version

SYNOPSIS
        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

DESCRIPTION
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.

  Methods

version( METHOD );
    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:

            my @list = Mac::OSVersion->version( 'gestalt' );

methods()
    Returns the list of methods that "version" can use to do its work.

default_major_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.

major_version_exists( MAJOR )
    Returns true if the argument is a known major version number.

name( [METHOD] )
    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.

minor_to_name( MINOR [, MAJOR] )
    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
            15 Sequoia

minor_version_numbers( [ MAJOR ] )
    Returns a list of the minor version numbers. This takes an optional major version argument, which is 10 by default.

minor_version_names( [ MAJOR ] )
    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.

major( [METHOD] )
    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.

minor( [METHOD] )
    Returns the major version number, e.g. 4 or 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.

point( [METHOD] )
    Returns the point release version number, e.g. 11 or 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.

build( [METHOD] )
    Returns the point release version number, e.g. 11 or 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.

kernel( [METHOD] )
    Returns the kernel version number, e.g. 8.10.1.

    "METHOD" optionally specifies the method to use to get the answer. See "version" for the possible values. Not all methods can return an answer.

  Ways of collecting info
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

default
    Uses several methods to collect information.

gestalt
    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.

    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.

sw_vers
    Only uses "/usr/bin/sw_vers" to get the major, minor, point, build, and name fields.

    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.

system_profiler
    Only uses "/usr/sbin/system_profiler" to get the major, minor, point, build, and name fields.

    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.

    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)

uname
    Only uses "uname -a" to get the kernel field.

    In scalar context, returns the kernel version. In list context, returns the same list as "version", although some fields may be missing.

TO DO
* Specify a remote machine

SEE ALSO

•   /usr/bin/sw_vers

•   /usr/sbin/system_profiler

•   /usr/bin/uname

•   Mac::Gestalt

SOURCE AVAILABILITY
This module is in Github

        https://github.com/briandfoy/mac-osversion

AUTHOR
brian d foy, "<briandfoy@pobox.com>"

COPYRIGHT AND LICENSE
Copyright © 2007-2025, brian d foy <briandfoy@pobox.com>. All rights reserved.

You may redistribute this under the terms of the Artistic License 2.0.