package Perinci::CmdLine::Manual::FAQ; # just to make podweaver happy

# DATE
# VERSION

1;
# ABSTRACT: FAQs

__END__

=pod

=encoding UTF-8

=head1 NAME

Perinci::CmdLine::Manual::FAQ - FAQs

=head1 VERSION

This document describes version 0.81 of Perinci::CmdLine::Manual::FAQ (from Perl distribution Perinci-CmdLine-Lite), released on 2015-01-20.

=head1 NOMENCLATURE

C<[Classic]> denotes that the answer applies to L<Perinci::CmdLine> only and not
L<Perinci::CmdLine::Lite>. C<[Lite]> denotes that the answer is specific to
Perinci::CmdLine::Lite. C<[Any]> denotes that the answer is specific to
L<Perinci::CmdLine::Any>.

=head1 GENERAL

=head2 Why are there two frameworks Perinci::CmdLine and Perinci::CmdLine::Lite?

First there is Perinci::CmdLine (that's why it's refered to as C<[Classic]> in
this document). But as it grows in features, the startup overhead also grows.
Perinci::CmdLine::Lite is a reimplementation that is focused on keeping startup
overhead low to avoid making tab completion noticeably slow. However, some
features are still missing in Lite. For more information, see the documentation
of L<Perinci::CmdLine::Lite>.

Implementation-wise, the two share a lot of common code in the form of their
base class, L<Perinci::CmdLine::Base>. The interface is also 99% the same.

It is possible that in the future the two versions will merge again.

=head2 What is Perinci::CmdLine::Any then?

This is a module that allows you to select Perinci::CmdLine or
Perinci::CmdLine::Lite. So your scripts do not need to be modified when user
wants to switch between the two.

=head2 How does P::C compare with other CLI-app frameworks?

The main difference is that Perinci::CmdLine accesses your code through L<Riap>
protocol, not directly. This means that aside from local Perl code, P::C can
also provide CLI for code in remote hosts/languages. For a very rough demo,
download and run this PHP Riap::TCP server
https://github.com/sharyanto/php-Phinci/blob/master/demo/phi-tcpserve-terbilang.php
on your system. After that, try running:

 % peri-run riap+tcp://localhost:9090/terbilang --help
 % peri-run riap+tcp://localhost:9090/terbilang 1234

Everything from help message, calling, argument checking, tab completion works
for remote code as well as local Perl code.

=head2 But my application is OO? But I want an OO framework?

This framework is currently function-centric. There are already several OO-based
command-line frameworks on CPAN.

=head1 SEE ALSO

L<Perinci::CmdLine::Manual>

=head1 HOMEPAGE

Please visit the project's homepage at L<https://metacpan.org/release/Perinci-CmdLine-Lite>.

=head1 SOURCE

Source repository is at L<https://github.com/perlancar/perl-Perinci-CmdLine-Lite>.

=head1 BUGS

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

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.

=head1 AUTHOR

perlancar <perlancar@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by 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.

=cut
