+=pod
+
=head1 NAME
Devel::REPL::Overview - overview of Devel::REPL.
=head2 What is a console? How it can assist you?
- Most modern languages have consoles. Console is an interactive tool
+Most modern languages have consoles. The console is an interactive tool
that evaluates your input while you type it.
It gives you several advantages:
=back
-
-For Ruby it would be irb, for Python is... python byitself and for perl...
+For Ruby it would be irb, for Python is... python by itself and for perl...
and there was nothing for perl (except that ugly perl -d -e "" and several
-failed projects) until Devel::REPL was written by Matt S Trout (a.k.a. mst)
+failed projects) until L<Devel::REPL> was written by Matt S Trout (a.k.a. mst)
from ShadowCatSystems L<http://www.shadowcatsystems.co.uk>.
-
=head2 Devel::REPL - the Perl console
-
REPL stands for Read, Evaluate, Print, Loop.
Lets install and try it.
=head2 Control files a.k.a. I don't want to type it every time
-Devel::REPL has control files feature. Control files are
+L<Devel::REPL> has a control files feature. Control files are
evaluated on session start in the same way as you would
-type them manually in console.
+type them manually in the console.
-Default control file is located at `$HOME/.re.pl/repl.rc` .
+The default control file is located at F<$HOME/.re.pl/repl.rc>.
You can store there any statements you would normally type in.
-I.e. my `$HOME/.re.pl/repl.rc` has next lines:
+I.e. my F<$HOME/.re.pl/repl.rc> has next lines:
use feature 'say'; # to don't write \n all the time
sub pp { print Data::Dumper->Dump([@_]) }
You can have multiple control files and they can be anywhere in the
-file system. To make re.pl use some rc-file other than repl.rc
+file system. To make F<re.pl> use some rc-file other than F<repl.rc>,
call it like this:
$ re.pl --rcfile /path/to/your/rc.file
-If your rc-file is in `$HOME/.re.pl` directory, you can omit path:
+If your rc-file is in F<$HOME/.re.pl> directory, you can omit the path:
$ re.pl --rcfile rc.file
=head2 I want it to bark, fly, jump and swim! or Plugins
-Plugins extend functionality and change behavor of Devel::REPL.
+Plugins extend functionality and change behavior of Devel::REPL.
Bundled plugins are:
=over 2
=item *
-Devel::REPL::Plugin::History
+L<Devel::REPL::Plugin::History>
No comments. Simply history.
=item *
-Devel::REPL::Plugin::!LexEnv
+L<Devel::REPL::Plugin::!LexEnv>
Provides a lexical environment for the Devel::REPL.
=item *
-Devel::REPL::Plugin::DDS
+L<Devel::REPL::Plugin::DDS>
Formats return values with Data::Dump::Streamer module.
=item *
-Devel::REPL::Plugin::Packages
+L<Devel::REPL::Plugin::Packages>
Keeps track of which package your're in.
=item *
-Devel::REPL::Plugin::Commands
+L<Devel::REPL::Plugin::Commands>
Generic command creation plugin using injected functions.
=item *
-Devel::REPL::Plugin::MultiLine::PPI
+L<Devel::REPL::Plugin::MultiLine::PPI>
Makes Devel::REPL read your input until your block
is finished. What does this means: you can type a part of a block
on one line and second part on another:
but this *doesn't* mean you can print sub name or identifier
on several lines. Don't do that! It won't work.
-
=back
There are lots of contributed plugins you can find at CPAN.
=head1 Profiles
-If plugins change and extend functionality of Devel::REPL, profiles
+If plugins change and extend functionality of L<Devel::REPL>, profiles
are changing your environment (loaded plugins, constants, subs and etc.).
-There's only one bundled profile called `Devel::REPL::Profile::Default`, lets
-take a look at it:
+For example, the Minimal profile, L<Devel::REPL::Profile::Minimal>:
- package Devel::REPL::Profile::Default;
+ package Devel::REPL::Profile::Minimal;
use Moose; ### advanced OOP system for Perl
### it is called on profile activation
sub apply_profile {
my ($self, $repl) = @_;
- ### $self - no comments, $repl - current instance of Devel::REPL
+ ### $self - no comments, $repl - current instance of Devel::REPL
$repl->load_plugin($_) for $self->plugins; ### load our plugins
}
1;
-At the moment there are no profiles on CPAN. Mostly you'll use control files.
-To enable some profile use --profile switch:
+There is also the L<StandardDevel::REPL::Profile::Standard> profile, which contains a number of optional (yet
+very useful) features.
+
+To enable some profile use the C<--profile> switch:
$ re.pl --profile SomeProfile
-=head1 See Also
+Alternatively, you can set the environment variable C<DEVEL_REPL_PROFILE> to
+C<SomeProfile>, or set the C<profile> key in your C<rcfile> (see
+L<Devel::REPL> for more information).
+
+=head1 SEE ALSO
+
+=for :list
+* L<Devel::REPL>
+* L<Devel::REPL::Plugin>
+* L<Devel::REPL::Profile>
+* L<Reply>
-L<Devel::REPL>, L<Devel::REPL::Plugin>, L<Devel::REPL::Profile>
+=cut