Acme::Given::Hash - you like given but it's too much typing.
use Acme::Given::Hash; my $result = $given ~~ gvn { $value1 => $scalar , $value2 => do { ... } , $value3 => sub{ ... } } || $default ; # is going to result in the same thing as: my $result; given($given) { when ($value1) { $result = $scalar } when ($value2) { $result = do{ ... }} when ($value3) { $result = sub{...}->() } default { $result = $default } }; # if you use an arrayref you can do more complex matching $result = $given ~~ gvn [ 'scalar' => 'still works, just like the hash' , qr{reg} => [qw{also works}] , [1..5] => 'works too' , {a=>b,c=>d} => 'same here' , gvn { foo => 'bar' } => 'also works but "bar" will be seen as a true value rather then the thing to match' ];
my $given_hash_obj = gvn {...}; my $given_array_obj = gvn [...];
This is really just a simple constructor that blesses the given structure in to an object where ~~ is overridden as to trip the value of the structure.
All on Github: https://github.com/notbenh/Acme-Given-Hash/issues
NOTBENH <ben hengst> wrote this but it was heavly inspired by the team over at Puppet Labs as they have something like this, Also I could not have done this with out the smart match op, thanks team perl.
All on Github: https://github.com/notbenh/Acme-Given-Hash
Issues on Github: https://github.com/notbenh/Acme-Given-Hash/issues
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html
To install Acme::Given::Hash, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Acme::Given::Hash
CPAN shell
perl -MCPAN -e shell install Acme::Given::Hash
For more information on module installation, please visit the detailed CPAN module installation guide.