NAME
    App::PMUtils - Command-line utilities related to Perl modules

VERSION
    This document describes version 0.743 of App::PMUtils (from Perl
    distribution App-PMUtils), released on 2023-01-28.

SYNOPSIS
    This distribution provides the following command-line utilities related
    to Perl modules:

    *   cpanm-this-mod

    *   module-dir

    *   pmabstract

    *   pmbin

    *   pmcat

    *   pmchkver

    *   pmcore

    *   pmcost

    *   pmdir

    *   pmdoc

    *   pmedit

    *   pmgrep

    *   pmhtml

    *   pminfo

    *   pmlatest

    *   pmless

    *   pmlines

    *   pmlist

    *   pmman

    *   pmminversion

    *   pmpath

    *   pmstripper

    *   pmuninst

    *   pmunlink

    *   pmversion

    *   pmxs

    *   podlist

    *   podpath

    *   pwd2mod

    *   rel2mod

    *   update-this-mod

    The main purpose of these utilities is tab completion.

FUNCTIONS
  pmabstract
    Usage:

     pmabstract(%args) -> [$status_code, $reason, $payload, \%result_meta]

    Extract the abstract of locally installed Perl module(s).

    This function is not exported.

    Arguments ('*' denotes required arguments):

    *   module => *array[perl::modname]*

        (No description)

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

  pmdir
    Usage:

     pmdir(%args) -> [$status_code, $reason, $payload, \%result_meta]

    Get directory of locally installed Perl module/prefix.

    This is basically a shortcut for:

     % pmpath -Pd MODULE_OR_PREFIX_NAME

    Sometimes I forgot that pmpath has a "-d" option, and often intuitively
    look for a pmdir command.

    This function is not exported.

    Arguments ('*' denotes required arguments):

    *   abs => *bool*

        Absolutify each path.

    *   module => *array[perl::modname]*

        (No description)

    *   pm => *int* (default: 1)

        (No description)

    *   pmc => *int* (default: 0)

        (No description)

    *   pod => *int* (default: 0)

        (No description)

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

  pmpath
    Usage:

     pmpath(%args) -> [$status_code, $reason, $payload, \%result_meta]

    Get path to locally installed Perl module.

    This function is not exported.

    Arguments ('*' denotes required arguments):

    *   abs => *bool*

        Absolutify each path.

    *   all => *bool*

        Get all found files for each module instead of the first one.

    *   dir => *bool*

        Show directory instead of path.

        Also, will return "." if not found, so you can conveniently do this
        on a Unix shell:

         % cd C<pmpath -Pd Moose>

        and it won't change directory if the module doesn't exist.

    *   module => *array[perl::modname]*

        (No description)

    *   pm => *int* (default: 1)

        (No description)

    *   pmc => *int* (default: 0)

        (No description)

    *   pod => *int* (default: 0)

        (No description)

    *   prefix => *int* (default: 0)

        (No description)

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

  pmunlink
    Usage:

     pmunlink(%args) -> [$status_code, $reason, $payload, \%result_meta]

    Unlink (remove) locally installed Perl module.

    This function is not exported.

    This function supports dry-run operation.

    Arguments ('*' denotes required arguments):

    *   all => *bool*

        Get all found files for each module instead of the first one.

    *   module => *array[perl::modname]*

        (No description)

    *   pm => *int* (default: 1)

        (No description)

    *   pmc => *int* (default: 0)

        (No description)

    *   pod => *int* (default: 0)

        (No description)

    Special arguments:

    *   -dry_run => *bool*

        Pass -dry_run=>1 to enable simulation mode.

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

  rel2mod
    Usage:

     rel2mod(%args) -> any

    Convert release name (e.g. Foo-Bar-1.23.tar.gz) to module name
    (Foo::Bar).

    This function is not exported.

    Arguments ('*' denotes required arguments):

    *   releases* => *array[str]*

        (No description)

    Return value: (any)

  update_this_mod
    Usage:

     update_this_mod() -> [$status_code, $reason, $payload, \%result_meta]

    Update "this" Perl module.

    Will use App::ThisDist's "this_mod()" to find out what the current Perl
    module is, then run "cpanm -n" against the module. It's a convenient
    shortcut for:

     % this-mod | cpanm -n

    This function is not exported.

    No arguments.

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

FAQ
  What is the purpose of this distribution? Haven't other similar utilities existed?
    For example, mpath from Module::Path distribution is similar to pmpath
    in App::PMUtils, and mversion from Module::Version distribution is
    similar to pmversion from App::PMUtils distribution, and so on.

    True. The main point of these utilities is shell tab completion, to save
    typing.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/App-PMUtils>.

SOURCE
    Source repository is at <https://github.com/perlancar/perl-App-PMUtils>.

SEE ALSO
    Below is the list of distributions that provide CLI utilities for
    various purposes, with the focus on providing shell tab completion
    feature.

    App::DistUtils, utilities related to Perl distributions.

    App::DzilUtils, utilities related to Dist::Zilla.

    App::GitUtils, utilities related to git.

    App::IODUtils, utilities related to IOD configuration files.

    App::LedgerUtils, utilities related to Ledger CLI files.

    App::PerlReleaseUtils, utilities related to Perl distribution releases.

    App::PlUtils, utilities related to Perl scripts.

    App::PMUtils, utilities related to Perl modules.

    App::ProgUtils, utilities related to programs.

    App::WeaverUtils, utilities related to Pod::Weaver.

AUTHOR
    perlancar <perlancar@cpan.org>

CONTRIBUTOR
    Steven Haryanto <stevenharyanto@gmail.com>

CONTRIBUTING
    To contribute, you can send patches by email/via RT, or send pull
    requests on GitHub.

    Most of the time, you don't need to build the distribution yourself. You
    can simply modify the code, then test via:

     % prove -l

    If you want to build the distribution (e.g. to try to install it locally
    on your system), you can install Dist::Zilla,
    Dist::Zilla::PluginBundle::Author::PERLANCAR,
    Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two
    other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps
    required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE
    This software is copyright (c) 2023, 2022, 2021, 2020, 2019, 2018, 2017,
    2016, 2015, 2014 by perlancar <perlancar@cpan.org>.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://rt.cpan.org/Public/Dist/Display.html?Name=App-PMUtils>

    When submitting a bug or request, please include a test-file or a patch
    to an existing test-file that illustrates the bug or desired feature.