NAME
    Perinci - Collection of Perl modules for Rinci and Riap

VERSION
    version 0.27

DESCRIPTION
    Perinci is a collection of modules for implementing/providing tools
    pertaining to Rinci and Riap, spread over several distributions for
    faster incremental releases. These tools include:

    *   Wrapper

        Perinci::Sub::Wrapper is the subroutine wrapper which
        implements/enforces many of the metadata properties, like argument
        validation (using information in "args") as well as offers features
        like convert argument passing style, automatically envelope function
        result, etc.

        It is extensible so you can implement wrapper for your properties
        too.

    *   Riap clients and servers (Perinci::Access::*)

        Perinci::Access::InProcess is a client/server (well, neither really,
        since everything is in-process) to access Perl modules/functions
        using the Riap protocol. It is basically a way to call your
        modules/functions using URI syntax; it also dictates a bit on how
        you should write your functions and where to put the metadata,
        though it provides a lot of flexibility.

        Perinci::Access::HTTP::Client and Perinci::Access::HTTP::Server is a
        pair of client/server library to access Perl modules/functions using
        Riap over HTTP, implementing the Riap::HTTP specification.

        Perinci::Access::Simple::Client,
        Perinci::Access::Simple::Server::Socket,
        Perinci::Access::Simple::Server::Pipe are client/server libraries
        that implement Riap::Simple, either via TCP/Unix socket or piping.

        Perinci::Access is a simple wrapper for all Riap clients, you give
        it a URL/module name/whatever and it will try to select the
        appropriate Riap client for you.

    *   Command-line libraries

        Perinci::CmdLine is an extensible and featureful command-line
        library to create command-line programs and API clients. Features
        include: transparent remote access (thanks to Riap), command-line
        options parsing, --help message, shell tab completion, etc.

    *   Documentation tools

        See CPAN for Perinci::To::POD, Perinci::To::Text, Perinci::To::HTML.
        These document generators support translations based on
        Locale::Maketext.

    *   Function/metadata generators

        These are convenient tools to generate common/generic function
        and/or metadata. For example, Perinci::Sub::Gen::AccessTable can
        generate accessor function + metadata for table data.

        See CPAN for more Perinci::Sub::Gen::* modules.

    *   Others

        Samples: Perinci::Use, Perinci::Exporter.

        See CPAN for more Perinci::* modules.

    To get started, read Perinci::Manual::Tutorial.

STATUS
    Most modules have been implemented. It is safe to start putting metadata
    to your code. However, some have not:

    *   Argument validation

        Perinci::Sub::Wrapper still does not generate code to validate
        function arguments. This is because the Sah schema is still somewhat
        in flux and largely unimplemented.

        I usually do some manual and minimal argument validation manually in
        the function body. They can be removed once the wrapper generates
        validation code, or left as-is (sometimes the function is used
        unwrapped).

FAQ
  What does Perinci mean?
    Perinci is taken from Indonesian word, meaning: to specify, to explain
    in more detail. It can also be an abbreviation for "Perl implementation
    of Rinci".

SEE ALSO
    Rinci

DESCRIPTION
    This module has Rinci metadata.

FUNCTIONS
    None are exported by default, but they are exportable.

AUTHOR
    Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2012 by Steven Haryanto.

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

