NAME

OptionHash - Checking of option hashes

VERSION

version 0.2.0

SYNOPSIS

use OptionHash;

my $cat_def = ohash_define( keys => [qw< tail nose claws teeth>]);

sub cat{
  my %options = @_;
  ohash_check( $cat_def, \%options);
  # ...
}

cat( teeth => 'sharp' );
cat( trunk => 'long'); # Boom, will fail. Cats dont expect to have a trunk.

DESCRIPTION

I like to pass options around in hash form because it's clear and flexible. However it can lead to sloppy mistakes when you typo the keys. OptionHash quickly checks your hashes against a definition and croaks if you've passed in bad keys.

Currently.. That's it! Simple but effective.

EXPORTED SUBS

ohash_define

Define an optionhash specification, sort-of a type:

my $cat_def = ohash_define( keys => [ qw< teeth claws > ]);

ohash_check

Check a hash against a definition:

ohash_check( $cat_def, \%options);

If everything is okay things will proceed, otherwise ohash_check will croak (see Carp).

FUTURE

Maybe do the checking part with XS, although honestly it's fast in perl. Might do an extra module as it's nice to have a pure perl version anyway.

Also other checks, like mandatory keys.

AUTHOR

Joe Higton <draxil@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Joe Higton <draxil@gmail.com>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.