DOKK / manpages / debian 12 / libpackage-new-perl / Package::New.3pm.en
Package::New(3pm) User Contributed Perl Documentation Package::New(3pm)

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

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

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.

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"};
  }

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';

I recommend Lazy Loading where you can.

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

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

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

Log on RT and contact the author.

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

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

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.

base, parent

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

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

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

2022-10-14 perl v5.34.0