Package::Generator

Section: User Contributed Perl Documentation (3)
Updated: 2021-01-27
Page Index
 

NAME

Package::Generator - generate new packages quickly and easily  

VERSION

version 1.106  

SYNOPSIS

    use Package::Generator;

    my $package = Package::Generator->new_package;
    ...

 

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.


 

Index

NAME
VERSION
SYNOPSIS
DESCRIPTION
INTERFACE
new_package
assign_symbols
package_exists
AUTHOR
COPYRIGHT AND LICENSE