With constructor package Users; use Class::AccessorMaker { username => "guest", password => "", role => "guest", groups => [ "guest" ] }; package main; my $usr = Users->new(username => $uname, password => $pw); With init constructor package MailThing; use Class::AccessorMaker { to => "", from => "hartog\@2organize.com", cc => "", bcc => "", bounce => "" }, "new_init"; sub init { my ($self) = @_; ... } package main; my $mlr = MailThing->new(); Without constructor package HitMan; use Class::AccessorMaker { victim => "", location => "", data => {} }, "no_new"; sub new { my $class = ref($_[0]) or $_[0]; shift; return bless({}, $class); } package main; Of course the first example describes some sort of user system, which assumes you are a guest by default. The second example is some sort of mailer-object. And the third is used by a lot of serial killers out there...