use strict;
use warnings;
use Data::Dumper;
sub groupsOf (&$@);
my $dbStr =
q{special:1001:area_code:617|special:1001:zip_code:02205|special:1001:dow:0|special:1001:tod:14};
my $rhRes = {
groupsOf { $_[ 0 ] eq q{special} ? () : @_ } 2, split m{\||:}, $dbStr
};
print Data::Dumper->Dumpxs( [ $rhRes ], [ qw{ rhRes } ] );
sub groupsOf (&$@)
{
my $rcToRun = shift;
my $groupsOf = shift;
my $rcDoIt;
$rcDoIt = sub
{
$rcToRun->(
map shift, 1 .. ( @_ < $groupsOf ? @_ : $groupsOf )
),
@_ ? &$rcDoIt : ();
};
&$rcDoIt;
}
####
$rhRes = {
'tod' => '14',
'zip_code' => '02205',
'dow' => '0',
'area_code' => '617'
};
####
use strict;
use warnings;
use List::Util qw{ pairs };
use Data::Dumper;
my $dbStr =
q{special:1001:area_code:617|special:1001:zip_code:02205|special:1001:dow:0|special:1001:tod:14};
my $rhRes = {
map { @{ $_ } }
grep { $_->[ 0 ] ne q{special} }
pairs split m{\||:}, $dbStr
};
print Data::Dumper->Dumpxs( [ $rhRes ], [ qw{ rhRes } ] );