NAME
Perinci - Collection of Perl modules for Rinci and Riap
VERSION
version 0.10
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::TCP::Client and Perinci::Access::TCP::Server is a pair of client/server library to access Perl modules/functions using Riap over TCP, implementing the Riap::TCP specification.
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::HTTP), 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::Access::InProcess which will tell you on how to write your functions and where to put the metadata. Or, if you only want to access existing code/metadata, head over to Perinci::Access or Perinci::CmdLine.
To declare and implement a new function metadata property, see example in one of the Perinci-Sub-property-*
modules, like Perinci::Sub::property::timeout.
To declare and implement a new function feature, see example in one of the Perinci-Sub-feature-*
modules, like Perinci::Sub::feature::foo.
To declare and implement a new function dependency type, see example in one of the Perinci-Sub-dep-*
modules, like Perinci::Sub::dep::pm.
STATUS
Some modules have been implemented, some (including important ones) have not. See details on CPAN.
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
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.