my $spec = { 'Parameters' => [ 'shipmentIncrementId' => { 'required' => 1, 'type' => 'string', }, 'carrier' => { 'required' => 1, 'type' => 'ups|usps|dhl|fedex|dhlint|custom', }, 'title' => { 'required' => 1, 'type' => 'string', }, 'trackNumber' => { 'required' => 1, 'type' => 'string', }, ], 'Response' => 'scalar', }; #### my @params = $thing->{'Parameters'}; for my $index (0..$#params) { next if $index % 2 != 0; my $parameter = $params[$index]; my $spec = $params[$index + 1]; # do something from here... } #### define_method 'foo' => { 'Parameters' => [ 'bar' => { 'required => 1, 'type' => 'string', }, 'baz' => { 'required => 1, 'type' => 'string', }, ] };