The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Perinci - Collection of Perl modules for Rinci and Riap

VERSION

version 0.25

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.