Why not adopt me?
NAME
Package::Generator - generate new packages quickly and easily
VERSION
version 1.106
SYNOPSIS
DESCRIPTION
This module lets you quickly and easily construct new packages. It gives them unused names and sets up their package data, if provided.
INTERFACE
new_package
my
$package
= Package::Generator->new_package(\
%arg
);
This returns the newly generated package. It can be called with no arguments, in which case it just returns the name of a pristene package. The base
argument can be provided to generate the package under an existing namespace. A make_unique
argument can also be provided; it must be a coderef which will be passed the base package name and returns a unique package name under the base name.
A data
argument may be passed as a reference to an array of pairs. These pairs will be used to set up the data in the generated package. For example, the following call will create a package with a $foo
set to 1 and a @foo
set to the first ten counting numbers.
my
$package
= Package::Generator->new_package({
data
=> [
foo
=> 1,
foo
=> [ 1 .. 10 ],
]
});
For convenience, isa
and version
arguments may be passed to new_package
. They will set up @ISA
, $VERSION
, or &VERSION
, as appropriate. If a single scalar value is passed as the isa
argument, it will be used as the only value to assign to @ISA
. (That is, it will not cause $ISA
to be assigned; that wouldn't be very helpful.)
assign_symbols
Package::Generator->assign_symbols(
$package
, \
@key_value_pairs
);
This routine is used by "new_package"
to set up the data in a package.
package_exists
...
if
Package::Generator->package_exists(
$package
);
This method returns true if something has already created a symbol table for the named package. This is equivalent to:
...
if
defined
*{
$package
.
'::'
};
It's just a little less voodoo-y.
AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2005 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.