---
name: "Package::New"
section: "3pm"
platform: "linux"
package: "libpackage-new-perl"
version: "0.10-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Package::New"
---

# Package::New(3pm)

Simple base package from which to inherit

## NAME

Package::New - Simple base package from which to inherit

## SYNOPSIS

```
  package My::Package;
  use base qw{Package::New}; #provides new and initialize
```

## DESCRIPTION

The Package::New object provides a consistent constructor for objects.

I find that I always need these two methods in every package that I build.  I plan to use this package as the base for all of my CPAN packages.

## RECOMMENDATIONS

### Sane defaults

I recommend that you have sane default for all of your object properties.  I recommend using code like this.

```
  sub myproperty {
    my $self=shift;
    $self->{"myproperty"}=shift if @_;
    $self->{"myproperty"}="Default Value" unless defined $self->{"myproperty"};
    return $self->{"myproperty"};
  }
```

### use strict and warnings

I recommend to always use strict, warnings and our version.

```
  package My::Package;
  use base qw{Package::New};
  use strict;
  use warnings;
  our $VERSION='0.01';
```

### Lazy Load where you can

I recommend Lazy Loading where you can.

```
  sub mymethod {
    my $self=shift;
    $self->load unless $self->loaded;
    return $self->{"mymethod"};
  }
```

## USAGE

## CONSTRUCTOR

### new

```
  my $obj = Package::New->new(key=>$value, ...);
```

### initialize

You can override this method in your package if you need to do something after construction.  But, lazy loading may be a better option.

## BUGS

Log on RT and contact the author.

## SUPPORT

DavisNetworks.com provides support services for all Perl applications including this package.

## AUTHOR

```
  Michael R. Davis
  CPAN ID: MRDVT
  DavisNetworks.com
  http://www.DavisNetworks.com/
```

## COPYRIGHT

This program is free software licensed under the...

```
  The BSD License
```

The full text of the license can be found in the LICENSE file included with this module.

## SEE ALSO

### Building Blocks

base, parent

### Other Light Weight Base Objects Similar to Package::New

Package::Base, Class::Base, Class::Easy, Object::Tiny, Badger::Base

### Heavy Base Objects - Drink the Kool-Aid

VSO, Class::Accessor::Fast, Class::Accessor, Moose, (as well as Moose-alikes Moo, Mouse), Class::MethodMaker, Class::Meta

### Even more

Spiffy, mixin, SUPER, Class::Trait, Class::C3, Moose::Role
