Anna Maresova
anicka
Involved Projects and Packages
This module allows you to execute code when perl finished compiling the
surrounding scope.
This Perl module provides an interface to most of the functionality available
in Berkeley DB versions 2, 3 and 4. In general it is safe to assume that the
interface provided here to be identical to the Berkeley DB interface. The main
changes have been to make the Berkeley DB API work in a Perl way. Note that if
you are using Berkeley DB 2.x, the new features available in
Berkeley DB 3.x or DB 4.x are not available via this module.
This module implements a virtual base class for parsing BIND server
version 8 configuration files (named.conf).
Bit::Vector is an efficient C library which allows you to handle
bit vectors, sets (of integers), "big integer arithmetic" and
boolean matrices, all of arbitrary sizes.
The library is efficient (in terms of algorithmical complexity)
and therefore fast (in terms of execution speed) for instance
through the widespread use of divide-and-conquer algorithms.
The package also includes an object-oriented Perl module for
accessing the C library from Perl, and optionally features
overloaded operators for maximum ease of use.
The C library can nevertheless be used stand-alone, without Perl.
BSD::Resource is a class implementing access to process resource limit
and priority functions (e.g. getrusage, setrlimit, etc).
Cairo provides Perl bindings for the vector graphics library cairo.
It supports multiple output targets, including PNG, PDF and SVG.
Cairo produces identical output on all those targets.
A very simple perl module that models a calendar month.
This function returns a data structure representing the dates in a month. The
data structure returned is an array of array references. The first level array
represents the weeks in the month. The second level array contains the actual
days. By default, each week starts on a Sunday and the value in the array is
the date of that day. Any days at the beginning of the first week or the end of
the last week that are from the previous or next month have the value undef.
Carp::Assert is intended for a purpose like the ANSI C library assert.h
This module is based on "'Carp.pm'" from Perl 5.005_03. It has been
modified to skip all package names matching the pattern given in the "use"
statement inside the "'qw()'" term (or argument list).
Suppose you have a family of modules or classes named "Pack::A", "Pack::B"
and so on, and each of them uses "'Carp::Clan qw(^Pack::);'" (or at least
the one in which the error or warning gets raised).
Thus when for example your script "tool.pl" calls module "Pack::A", and
module "Pack::A" calls module "Pack::B", an exception raised in module
"Pack::B" will appear to have originated in "tool.pl" where "Pack::A" was
called, and not in "Pack::A" where "Pack::B" was called, as the unmodified
"'Carp.pm'" would try to make you believe ':-)'.
This works similarly if "Pack::B" calls "Pack::C" where the exception is
raised, etcetera.
In other words, this blames all errors in the "'Pack::*'" modules on the
user of these modules, i.e., on you. ';-)'
The skipping of a clan (or family) of packages according to a pattern
describing its members is necessary in cases where these modules are not
classes derived from each other (and thus when examining '@ISA' - as in the
original "'Carp.pm'" module - doesn't help).
The purpose and advantage of this is that a "clan" of modules can work
together (and call each other) and throw exceptions at various depths down
the calling hierarchy and still appear as a monolithic block (as though
they were a single module) from the perspective of the caller.
In case you just want to ward off all error messages from the module in
which you "'use Carp::Clan'", i.e., if you want to make all error messages
or warnings to appear to originate from where your module was called (this
is what you usually used to "'use Carp;'" for ';-)'), instead of in your
module itself (which is what you can do with a "die" or "warn" anyway), you
do not need to provide a pattern, the module will automatically provide the
correct one for you.
I.e., just "'use Carp::Clan;'" without any arguments and call "carp" or
"croak" as appropriate, and they will automatically defend your module
against all blames!
In other words, a pattern is only necessary if you want to make several
modules (more than one) work together and appear as though they were only
one.
Forcing a Stack Trace
As a debugging aid, you can force "'Carp::Clan'" to treat a "croak" as
a "confess" and a "carp" as a "cluck". In other words, force a detailed
stack trace to be given. This can be very helpful when trying to
understand why, or from where, a warning or error is being generated.
This feature is enabled either by "importing" the non-existent symbol
'verbose', or by setting the global variable "'$Carp::Clan::Verbose'"
to a true value.
You would typically enable it by saying
use Carp::Clan qw(verbose);
Note that you can both specify a "family pattern" and the string
"verbose" inside the "'qw()'" term (or argument list) of the "use"
statement, but consider that a pattern of packages to skip is pointless
when "verbose" causes a full stack trace anyway.
CGI::Ajax is an object-oriented module that provides a unique mechanism for
using perl code asynchronously from javascript- enhanced HTML pages.
CGI::Ajax unburdens the user from having to write extensive javascript,
except for associating an exported method with a document-defined event
(such as onClick, onKeyUp, etc). CGI::Ajax also mixes well with HTML
containing more complex javascript.
CGI::Ajax supports methods that return single results or multiple results
to the web page, and supports returning values to multiple DIV elements on
the HTML page.
Using CGI::Ajax, the URL for the HTTP GET/POST request is automatically
generated based on HTML layout and events, and the page is then dynamically
updated with the output from the perl function. Additionally, CGI::Ajax
supports mapping URL's to a CGI::Ajax function name, so you can separate
your code processing over multiple scripts.
Other than using the Class::Accessor module to generate CGI::Ajax' accessor
methods, CGI::Ajax is completely self-contained - it does not require you
to install a larger package or a full Content Management System, etc.
We have added _support_ for other CGI handler/decoder modules, like the
CGI::Simple manpage or the CGI::Minimal manpage, but we can't test these
since we run mod_perl2 only here. CGI::Ajax checks to see if a header()
method is available to the CGI object, and then uses it. If method() isn't
available, it creates it's own minimal header.
A primary goal of CGI::Ajax is to keep the module streamlined and maximally
flexible. We are trying to keep the generated javascript code to a minimum,
but still provide users with a variety of methods for deploying CGI::Ajax.
And VERY little user javascript.
CGI::FastTemplate manages templates and parses templates replacing
variable names with values. It was designed for mid to large scale
web applications (CGI, mod_perl) where there are great benefits to
separating the logic of an application from the specific
implementation details.
Author: Jason Moore
Checkbot is a perl5 script which can verify links within a region of
the World Wide Web. It checks all pages within an identified region,
and all links within that region. After checking all links within the
region, it will also check all links which point outside of the
region, and then stop.
Checkbot regularly writes reports on its findings, including all
servers found in the region, and all links with problems on those
servers.
Checkbot was written originally to check a number of servers at
once. This has implied some design decisions, so you might want to
keep that in mind when making suggestions. Speaking of which, be sure
to check the to do file on the website for things which have been
suggested for Checkbot.
This module automatically generates accessor/mutators for your class. Most of
the time, writing accessors is an exercise in cutting and pasting.
If you make your module a subclass of Class::Accessor and declare your accessor
fields with mk_accessors() then you'll find yourself with a set of
automatically generated accessors which can even be customized!
Class::Autouse allows you to specify a class the will only load when a
method of that class is called. For large classes that might not be
used during the running of a program, such as Date::Manip, this can
save you large amounts of memory, and decrease the script load time.
This module is intended as a drop-in replacement for NEXT, supporting the same interface, but using Class::C3 to do the hard work. You can then write new code without NEXT, and migrate individual source files to use Class::C3 or method modifiers as appropriate, at whatever pace you're comfortable with.
Class::Data::Inheritable is for creating accessor/mutators to class data.
That is, if you want to store something about your class as a whole
(instead of about a single object). This data is then inherited by your
subclasses and can be overriden.
For example:
Pere::Ubu->mk_classdata('Suitcase');
will generate the method Suitcase() in the class Pere::Ubu.
This new method can be used to get and set a piece of class data.
Pere::Ubu->Suitcase('Red');
$suitcase = Pere::Ubu->Suitcase;
The interesting part happens when a class inherits from Pere::Ubu:
package Raygun;
use base qw(Pere::Ubu);
# Raygun's suitcase is Red.
$suitcase = Raygun->Suitcase;
Raygun inherits its Suitcase class data from Pere::Ubu.
Inheritance of class data works analogous to method inheritance. As long as
Raygun does not "override" its inherited class data (by using Suitcase() to
set a new value) it will continue to use whatever is set in Pere::Ubu and
inherit further changes:
# Both Raygun's and Pere::Ubu's suitcases are now Blue
Pere::Ubu->Suitcase('Blue');
However, should Raygun decide to set its own Suitcase() it has now
"overridden" Pere::Ubu and is on its own, just like if it had overriden a
method:
# Raygun has an orange suitcase, Pere::Ubu's is still Blue.
Raygun->Suitcase('Orange');
Now that Raygun has overridden Pere::Ubu futher changes by Pere::Ubu no
longer effect Raygun.
# Raygun still has an orange suitcase, but Pere::Ubu is using Samsonite.
Pere::Ubu->Suitcase('Samsonite');
This module is intended to provide a general-purpose date and datetime
type for perl. You have a Class::Date class for absolute date and
datetime and have a Class::Date::Rel class for relative dates.
You can use "+", "-", "<" and ">" operators as with native perl data
types.
This module provides an XS implementation for portions of the Class::Load
manpage. See the Class::Load manpage for API details.
Class::Multimethods -- Supports multimethods and subroutine overloading
in Perl.
This is the "Class::Singleton" module. A Singleton describes an object
class that can have only one instance in any system. An example of a
Singleton might be a print spooler or system registry. This module
implements a Singleton class from which other classes can be derived. By
itself, the "Class::Singleton" module does very little other than manage
the instantiation of a single object. In deriving a class from
"Class::Singleton", your module will inherit the Singleton instantiation
method and can implement whatever specific functionality is required.
For a description and discussion of the Singleton class, see "Design
Patterns", Gamma et al, Addison-Wesley, 1995, ISBN 0-201-63361-2.
Author: Andy Wardley
It's possible to accidentally inherit an AUTOLOAD method. Often this
will happen if a class somewhere in the chain uses AutoLoader or
defines one of their own. This can lead to confusing error messages
when method lookups fail.
Sometimes you want to avoid this accidental inheritance. In that case,
inherit from Class::WhiteHole. All unhandled methods will produce
normal Perl error messages.
This module provides a general-purpose clone function to make deep copies
of Perl data structures. It calls itself recursively to copy nested hash,
array, scalar and reference types, including tied variables and objects.
The clone() function takes a scalar argument to copy. To duplicate arrays
or hashes, pass them in by reference:
my $copy = clone(\@array); my @copy = @{ clone(\@array) };
my $copy = clone(\%hash); my %copy = %{ clone(\%hash) };
The clone() function also accepts an optional second parameter that can be
used to limit the depth of the copy. If you pass a limit of 0, clone will
return the same value you supplied; for a limit of 1, a shallow copy is
constructed; for a limit of 2, two layers of copying are done, and so on.
my $shallow_copy = clone( $item, 1 );
To allow objects to intervene in the way they are copied, the clone()
function checks for a couple of optional methods. If an object provides a
method named 'clone_self', it is called and the result returned without
further processing. Alternately, if an object provides a method named
'clone_init', it is called on the copied object before it is returned.