Class::ObjectTemplate::DB extends Class::ObjectTemplate in one
simple way: the undefined() method.
The author finds this useful when representing classes based on
objects stored in databases (hence the name of the module).
That way an object can be created, without triggering a DB lookup.
Later if data is accessed and it is not currently present in the object,
it can be retrieved on an as-need basis.
Its 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.
If you have ever used Java, you may have run across the java.util.Observable
class and the java.util.Observer interface. Using them, you can decouple an
object from the one or more objects that wish to be notified whenever
particular events occur. Class::Observable allows you to mimic this action.
This module adds XPath-style matching to your object trees. This means
that you can find nodes using an XPath-esque query with "match()" from
anywhere in the tree. Also, the "xpath()" method returns a unique path
to a given node which can be used as an identifier.
NOTE: This module is not yet a complete XPath implementation. Over
time I expect the subset of XPath supported to grow. See the SYNTAX
documentation in the module POD for details on the current level of
support.
Class::XSAccessor implements fast read, write and read/write accessors in XS.
Additionally, it can provide predicates such as has_foo() for testing whether
the attribute foo is defined in the object. It only works with objects that
are implemented as ordinary hashes. Class::XSAccessor::Array implements the
same interface for objects that use arrays for their internal representation.
Essentially, this module is a very optimized version of Clone::More.
By taking advantage of one of Clone::More's 'OPTIMIZATION_HACKS' as
well as removing all the Pure Perl from the More.pm, I was able to
gain a lot of speed out of the module. Essentially, though, the core
of the module is exactly as that of Clone::More.
You will see that by using Benchmark::cmpthese, I ran a simple
comparison between Storable::dclone, Clone::More::clone, and
Clone::Fast::clone. You will (should) begin to see the reason why I
loaded this module along side of Clone::More.
Rate Storable Clone::More Clone::Fast
Storable 7552/s -- -39% -59%
Clone::More 12400/s 64% -- -33%
Clone::Fast 18442/s 144% 49% --
For more information relative to the DESCRIPTION of this module, I
recommend peeking into the POD written for Clone::More (I took more
time with it ;) )
This is intended to act as a utility in order to natively clone data structures
via a simple Perl interface. Will ensure that all references will be separated
from the parent data structure, yet kept relative to the new structure (if need
be).
Class::ReturnValue is a "clever" return value object that can allow
code calling your routine to expect:
a boolean value (did it fail)
or a list (what are the return values)
QCA aims to provide a straightforward and cross-platform crypto API,
using Qt datatypes and conventions.
Supported features:
* SSL/TLS
* X509
* SASL
* RSA
* Hashing (SHA1, MD5)
* Ciphers (Blowfish, 3DES, AES)
This module implements a deterministic, rectifying variant on Dijkstra's
guarded commands. Each named step is passed two blocks: an "ensure"
block that defines a test for a necessary and sufficient condition of
the step, and a "using" block that will cause that condition to obtain.