my ($self, %values) = @_; # we're being passed a hash so let's treat it like a hash my ($tree, $messageNum, $messageText) = @values{qw/tree messageNum messageText/}; #### sub validateParams { my ($data, @paramNames) = @_; die "first argument to validateParams must be a hash" unless ref $data eq 'HASH'; my $expect_count = @paramNames; my $actual_count = keys %$data; die "incorrect number of parameters - expected $expect_count, got $actual_count" unless $expect_count == $actual_count; for my $name (@paramNames) { die "parameter $name missing or undefined" unless defined $data->{$name}; } } #### { my @paramNames = qw/tree messageNum messageText/; sub new { my ($self, %values) = @_; validateParams(\%values, @paramNames); my ($tree, $messageNum, $messageText) = @values{@paramNames}; } }