Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

devel::repl::plugin::outputcache(3pm) [debian man page]

Devel::REPL::Plugin::OutputCache(3pm)			User Contributed Perl Documentation		     Devel::REPL::Plugin::OutputCache(3pm)

NAME
Devel::REPL::Plugin::OutputCache - remember past results, _ is most recent SYNOPSIS
> 21 / 7 3 > _ * _ 9 > sub { die "later" } sub { die "later" } > _->() Runtime error: later DESCRIPTION
Re-using results is very useful when working in a REPL. With "OutputCache" you get "_", which holds the past result. The benefit is that you can build up your result instead of having to type it in all at once, or store it in intermediate variables. "OutputCache" also provides "$_REPL->output_cache", an array reference of all results in this session. Devel::REPL already has a similar plugin, Devel::REPL::Plugin::History. There are some key differences though: Input vs Output "History" remembers input. "OutputCache" remembers output. Munging vs Pure Perl "History" performs regular expressions on your input. "OutputCache" provides the "_" sub as a hook to get the most recent result, and "$_REPL->output_cache" for any other results. Principle of Least Surprise "History" will replace exclamation points in any part of the input. This is problematic if you accidentally include one in a string, or in a "not" expression. "OutputCache" uses a regular (if oddly named) subroutine so Perl does the parsing -- no surprises. CAVEATS
The "_" sub is shared across all packages. This means that if a module is using the "_" sub, then there is a conflict and you should not use this plugin. For example, Jifty uses the "_" sub for localization. Jifty is the only known user. SEE ALSO
"Devel::REPL", "Devel::REPL::Plugin::History" AUTHOR
Shawn M Moore, "<sartak at gmail dot com>" COPYRIGHT AND LICENSE
Copyright (C) 2007 by Shawn M Moore This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2010-05-08 Devel::REPL::Plugin::OutputCache(3pm)

Check Out this Related Man Page

Devel::REPL::Profile(3pm)				User Contributed Perl Documentation				 Devel::REPL::Profile(3pm)

NAME
Devel::REPL::Profile - code to execute when re.pl starts SYNOPSIS
package Devel::REPL::Profile::MyProject; use Moose; use namespace::clean -except => [ 'meta' ]; 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 perl v5.14.2 2012-06-02 Devel::REPL::Profile(3pm)
Man Page