This module provides a way of abstracting away persistence of array and hash
variables.
It's useful for quick hacks when you don't care about pulling in the right DBM
library and calling tie and so on. Its job is to reduce fuss for the lazy
programmer at the cost of flexibility.
It uses MLDBM, so you can use complex data structures in your arrays and
hashes. It uses AnyDBM_File, so if you really care about which DBM you get, you
can modify AnyDBM_File::ISA in a BEGIN block after loading this module.
Class::Generate is a Perl5 module to simplify creating class
hierarchies. It offers typed or untyped scalar, array, and hash
members, required members, private members, methods (both
instance and class), and other common features of object-
oriented software development. Of course, you can implement all
these things without a special module, but doing it via
Class::Generate is much, much more concise. And furthermore,
it's much less error prone: if you are using Perl's -w flag,
Class::Generate will catch many class specification and usage
errors.
Daemon::Control provides a library for creating init scripts in perl. Your perl
script just needs to set the accessors for what and how you want something to
run and the library takes care of the rest.
You can launch programs through the shell (/usr/sbin/my_program) or launch Perl
code itself into a daemon mode. Single and double fork methods are supported and
in double-fork mode all the things you would expect like reopening
STDOUT/STDERR, switching UID/GID are supported.
There are two modules in this distribution. Date::Doomsday calculates
doomsday for a particular year. Date::DayOfWeek uses the doomsday
algorithm to calculate the day of the week for any given date.
Doomsday is a cute little idea invented by Dr John Conway that makes it
very easy to figure out the day of the week for any date.
For more information about the origins and mathematics surrounding
doomsday, see the following web sites:
http://rudy.ca/doomsday.html
http://quasar.as.utexas.edu/BillInfo/doomsday.html
http://www.cst.cmich.edu/users/graha1sw/Pub/Doomsday/Doomsday.html
The purpose of this library was to replace our dependence on Unix epoch time,
which, being limited to a range of about 1970 to 2030, is inadequate for our
purposes (we have data as old as 1870). This date library effectively handles
dates from A.D. 1000 to infinity, and would probably work all the way back to 0
(ignoring, of course, the switch-over to the Gregorian calendar). The useful
features of Unix epoch time (ease of date difference calculation and date
comparison, strict ordering) are preserved, and elements such as
human-legibility are added. The library handles fractional seconds and some
date/time manipulations used for the Global Positioning Satellite system.
This is yet another module that lets you access or change the elements
of a hash using methods with the same name as the element's key. It
follows in the footsteps of Hash::AsObject, Hash::Inflator,
Data::OpenStruct::Deep, Object::AutoAccessor, and probably others. The
main difference between this module and its forebears is that it
supports tied hashes, in addition to regular hashes. This allows a
modular division of labor: this class is generic and treats all hashes
the same; any special semantics come from the tied hash.
Hash::Merge::Simple will recursively merge two or more hashes and
return the result as a new hash reference. The merge function will
descend and merge hashes that exist under the same node in both the
left and right hash, but doesn't attempt to combine arrays, objects,
scalars, or anything else. The rightmost hash also takes precedence,
replacing whatever was in the left hash if a conflict occurs.
This code was pretty much taken straight from Catalyst::Utils, and
modified to handle more than 2 hashes at the same time.
The Inline::Java module allows you to put Java source code directly "inline"
in a Perl script or module. A Java compiler is launched and the Java code is
compiled. Then Perl asks the Java classes what public methods have been
defined. These classes and methods are available to the Perl program as if
they had been written in Perl.
The process of interrogating the Java classes for public methods occurs the
first time you run your Java code. The namespace is cached, and subsequent
calls use the cached version.
This module provides a number of list utility functions, all of which
take an initial code block to control their behaviour. They are
variations on similar core perl or List::Util functions of similar
names, but which use the block to control their behaviour. For
example, the core Perl function sort takes a list of values and
returns them, sorted into order by their string value. The sort_by
function sorts them according to the string value returned by the
extra function, when given each value.
The Inline::Tcl module allows you to put Tcl source code directly
"inline" in a Perl script or module. A Tcl interpreter is loaded and the
Tcl code is interpreted, then Perl asks the Tcl interpreter which global
procedures have been defined. Those functions are made available to your
Perl program as if they had been written in Perl.
The process of interrogating the Tcl interpreter for globals only occurs
the first time you run your Tcl code. The namespace is cached, and
subsequent calls use the cached version.