NAME
    recommended - Load a recommended module and don't die if it doesn't
    exist

VERSION
    version 0.001

SYNOPSIS
        use recommended 'Foo::Bar', {
            'Bar::Baz' => '1.23',
            'Wibble'   => '0.14',
        };

        if ( recommended->has( 'Foo::Bar' ) ) {
            # do something with Foo::Bar
        }

        # default version required
        if ( recommended->has( 'Wibble' ) ) {
            # do something with Wibble if >= version 0.14
        }

        # custom version required
        if ( recommended->has( 'Wibble', '0.10' ) ) {
            # do something with Wibble if >= version 0.10
        }

DESCRIPTION
    This module tries to load recommended modules of particular minimum
    versions and provides means to check if they are loaded. It is a thin
    veneer around Module::Runtime.

    The major benefit over using Module::Runtime directly is that this
    allows you to self-document your recommended modules at the top of your
    code, while still loading them on demand elsewhere.

USAGE
  import
        use recommended 'Foo::Bar', {
            'Bar::Baz' => '1.23',
            'Wibble'   => '0.14',
        };

    Scalar import arguments are treated as module names with a minimum
    required version of zero. Hash references are treated as
    module/minimum-version pairs. If you repeat, the later minimum version
    overwrites the earlier one.

    The list of modules and versions are kept separate for each calling
    package.

  has
        recommended->has( $module );
        recommended->has( $module, $alt_minimum_version );

    The "has" method takes a module name and optional alternative minimum
    version requirement and returns true if the following conditions are
    met:

    *   the module was recommended (via "use recommended")

    *   the module can be loaded

    *   the module meets the default or alternate minimum version

    Otherwise, it returns false.

    The module is loaded without invoking the module's "import" method, as
    running import on an optional module at runtime is just weird.

SEE ALSO
    *   Module::Runtime

    *   Test::Requires

SUPPORT
  Bugs / Feature Requests
    Please report any bugs or feature requests through the issue tracker at
    <https://github.com/dagolden/recommended/issues>. You will be notified
    automatically of any progress on your issue.

  Source Code
    This is open source software. The code repository is available for
    public review and contribution under the terms of the license.

    <https://github.com/dagolden/recommended>

      git clone https://github.com/dagolden/recommended.git

AUTHOR
    David Golden <dagolden@cpan.org>

COPYRIGHT AND LICENSE
    This software is Copyright (c) 2014 by David Golden.

    This is free software, licensed under:

      The Apache License, Version 2.0, January 2004