NAME¶
Devel::REPL::Profile - code to execute when re.pl starts
VERSION¶
version 1.003026
SYNOPSIS¶
package Devel::REPL::Profile::MyProject;
use Moose;
use namespace::autoclean;
with 'Devel::REPL::Profile';
sub apply_profile {
my ($self, $repl) = @_;
# do something here
}
1;
DESCRIPTION¶
For particular projects you might well end up running the same commands each
time the REPL shell starts up - loading Perl modules, setting configuration,
and so on.
A mechanism called
profiles exists to let you package and distribute
these start-up scripts, as Perl modules.
USAGE¶
Quite simply, follow the "SYNOPSIS" section above to create a
boilerplate profile module. Within the "apply_profile" method, the
$repl variable can be used to run any commands as the user would, within the
context of their running "Devel::REPL" shell instance.
For example, to load a module, you might have something like this:
sub apply_profile {
my ($self, $repl) = @_;
$repl->eval('use Carp');
}
As you can see, the "eval" method is used to run any code. The user
won't see any output from that, and the code can "safely" die
without destroying the REPL shell. The return value of "eval" will
be the return value of the code you gave, or else if it died then a
"Devel::REPL::Error" object is returned.
If you want to load a "Devel::REPL" plugin, then use the following
method:
$repl->load_plugin('Timing');
The "load_plugin" and "eval" methods should cover most of
what you would want to do before the user has access to the shell. Remember
that plugin features are immediately available, so you can load for example
the "LexEnv" plugin, and then declare "my" variables which
the user will have access to.
Selecting a Profile¶
To run the shell with a particular profile, use the following command:
system$ re.pl --profile MyProject
Alternatively, you can set the environment variable
"DEVEL_REPL_PROFILE" to MyProject.
When the profile name is unqualified, as in the above example, the profile is
assumed to be in the "Devel::REPL::Profile::" namespace. Otherwise
if you pass something which contains the "::" character sequence, it
will be loaded as-is.
AUTHOR¶
Matt S Trout - mst (at) shadowcatsystems.co.uk
(<
http://www.shadowcatsystems.co.uk/>)
LICENSE¶
This library is free software under the same terms as perl itself