This module can be used to more easily spot the place where a program or a
module generates errors. Its use is extremely simple, reduced to just'use'ing
it.
This is achieved by modifying the functions warn() and die() in order to
replace the standard messages by complete stack traces that precisely indicates
how and where the error or warning occurred. Other than this, their use should
stay unchanged, even when using die() inside eval().
The Devel::StackTrace module contains two classes, Devel::StackTrace and
Devel::StackTraceFrame. The goal of this object is to encapsulate the
information that can found through using the caller() function, as well as
providing a simple interface to this data.
The Devel::StackTrace object contains a set of Devel::StackTraceFrame
objects, one for each level of the stack. The frames contain all the data
available from caller() as of Perl 5.6.0 though this module still works
with 5.00503.
This module allows you to declare hierarchies of exception classes for
use in your code. It also provides a simple exception class that it
uses as the default base class for all other exceptions.
You may choose to use another base class for your exceptions.
Regardless, the ability to declare all your exceptions at compile time
is a fairly useful trick and helps push people towards more structured
use of exceptions.
IPC::Shareable allows you to tie a variable to shared memory making it
easy to share the contents of that variable with other Perl processes.
Currently either scalars or hashes can be tied; tying of arrays remains
a work in progress. However, the variable being tied may contain
arbitrarily complex data structures - including references to arrays,
hashes of hashes, etc. See the "REFERENCES" entry in this man page below
for more information.
List::SomeUtils provides some trivial but commonly needed functionality on lists
which is not going to go into List::Util.
All of the below functions are implementable in only a couple of lines of Perl
code. Using the functions from this module however should give slightly better
performance as everything is implemented in C. The pure-Perl implementation of
these functions only serves as a fallback in case the C portions of this module
couldn't be compiled on this machine.
Module::CheckDeps parses Perl code searching for used modules. It can either
return a list of all the modules used by some code, or a list of the used
modules that are not available in the host system (e.g. not installed modules).
Compared to similar modules, such as Module::ScanDeps, Module::CheckDeps is
simpler and less powerful, but also much faster.
https://github.com/AlexBio/Module-CheckDeps
p5-Module-Reload
================
Similar to Apache::Reload, this module allows a running perl program to reload
all its libraries. Very useful for developing perl servers.
When Perl pulls a file via require, it stores the filename in the global hash
%INC. The next time Perl tries to 'require' the same file, it sees the file in
%INC and does not reload from disk. This module's handler iterates over %INC
and reloads the file if it has changed on disk.
MooseX::Emulate::Class::Accessor::Fast attempts to emulate the behavior
of Class::Accessor::Fast as accurately as possible using the Moose
attribute system. The public API of Class::Accessor::Fast is wholly
supported, but the private methods are not. If you are only using the
public methods (as you should) migration should be a matter of switching
your "use base" line to a "with" line.
This is a role which provides an alternate constructor for creating objects
using parameters passed in from the command line.
This module attempts to DWIM as much as possible with the command line params
by introspecting your class's attributes. It will use the name of your
attribute as the command line option, and if there is a type constraint
defined, it will configure Getopt::Long to handle the option accordingly.
MouseX::App::Cmd marries App::Cmd with MouseX::Getopt. It is a direct port of
MooseX::App::Cmd to Mouse.
Use it like App::Cmd advises (especially see App::Cmd::Tutorial), swapping
App::Cmd::Command for MouseX::App::Cmd::Command.
Then you can write your Mouse commands as Mouse classes, with MouseX::Getopt
defining the options for you instead of opt_spec returning a
Getopt::Long::Descriptive spec.