Object obj = new Object( param1, param2 );
####
my $obj = new Object( $param1, $param2 );
####
package Constructor;
use strict;
use warnings;
use Exporter;
BEGIN {
our @ISA;
push @ISA, 'Exporter';
our @EXPORT = qw( );
our @EXPORT_OK = qw( );
}
sub import
{
my $class = shift;
my ($package, $filename, $line) = caller;
no strict 'refs';
my $slot = $package . '::' . $class;
# Input fields to our constructor
my @FIELDS = qw( foo bar baz );
*$slot = sub {
my $in_class = shift;
my $params;
if(ref($in_class) eq 'HASH') {
$params = $in_class;
$in_class = $class;
}
else {
$params = shift || { };
}
my $self = { map { $_ => $params->{$_} || '' } @FIELDS };
bless $self, $class;
};
}
1;
####
$ perl -MData::Dumper -I. -MConstructor -le '$obj = Constructor({ foo => 1 }); print Data::Dumper::Dumper($obj);'
$VAR1 = bless( {
'bar' => '',
'baz' => '',
'foo' => 1
}, 'Constructor' );