sub assertNamedParameters { # parameters: # $parametersRef, $argumentsRef my ($parametersRef, $argumentsRef) = @_; # check passed arguments assertValueIsDefined($parametersRef, $argumentsRef); # create parameter hash my %parameters = ( @{$parametersRef}, @{$argumentsRef}, ); # get valid number of parameters if (!exists($parameters{numNamedParameters})) { assertThrowException( "parameter key ('numNamedParameters') has not been defined in passed parameter hash"); } # get number of parameters my $numNamedParameters = $parameters{numNamedParameters}; # assert for valid parameter count if ($numNamedParameters < 1) { assertThrowException( "invalid number of parameters ($numNamedParameters) specified (minimum is one parameter)"); } # assert parameter list for valid parameter count # (account for the numParameters key itself (!)) if ((keys %parameters) != ($numNamedParameters + 1)) { assertThrowException( "invalid number of parameters ($numNamedParameters) passed"); } # return parameter values my ($parameterName, $parameterValue, @parameterValues); # retrieve each given parameter # (skipping 'numParameters' key) for (my $i = 1; $i <= $numNamedParameters; $i++) { # retrieve parameter name from parameter list # IN ORDER concerning given parameter list! $parameterName = $parametersRef->[2*$i]; # get parameter value from parameter hash $parameterValue = $parameters{$parameterName}; push(@parameterValues, $parameterValue); } return(@parameterValues); }