#!/usr/bin/perl use strict; use warnings; use Data::Dumper; package First; use Params::Validate qw(validate :types); our @EXPORT = qw(teller); our %params = ( 'A' => {'TYPE' => SCALAR}, 'B' => {'TYPE' => SCALAR} ); sub new { my ($class, @parameters) = @_; my $validate = {%params}; my $self = {validate(@parameters, $validate)}; return bless ($self,$class); } sub teller(){ my ($a) = shift; print Data::Dumper->Dump([$a]),"\n"; return 0; } #### #!/usr/bin/perl use strict; use warnings; use First qw(teller); my $obj = new First('A' => 'red','B'=>'green'); for (1..3 ) { # print ref($obj),"\n"; $obj->teller('Called', 'A' => 'Yellow'); }