I have the following data structure that I'm effectively treating as an ordered hash. I realize that I could use Tie::IxHash, but for various reasons (see below) I don't want to do that.
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', };
I'm iterating over the keys like so:
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... }
Is there a more elegant way of doing that?
As to why I'm not doing Tie::IxHash: I'm using this to specify dynamic methods like so:
define_method 'foo' => { 'Parameters' => [ 'bar' => { 'required => 1, 'type' => 'string', }, 'baz' => { 'required => 1, 'type' => 'string', }, ] };
Note that the application requires the arguments to be in order. I'm not sure how I'd use Tie::IxHash in that situation.
In reply to More elegant way of doing "ordered hash"? by PopeFelix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |