Here's one with a subselect on the keys (you can do a sort to get whatever order for the keys - left as an exercise for the reader ;)
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my %properties = (
if_mac => {
0 => {
value => '00:11:1A:F2:E1:92',
fixed => 0
},
1 => {
value => '00:11:1A:F2:E1:93',
fixed => 0
},
},
if_ip => {
0 => {
value => '132.181.30.3',
fixed => 0
},
1 => {
value => '132.181.30.4',
fixed => 0
},
}
);
my @values =
map { my $key=$_; map { [ $key, $_, $properties{$key}->{$_}->{value}
+ ] } keys %{$properties{$_}}} keys %properties;
print Dumper(\%properties);
print "\n";
print Dumper(\@values), "\n";
__OUTPUT__
$VAR1 = {
'if_ip' => {
'1' => {
'fixed' => 0,
'value' => '132.181.30.4'
},
'0' => {
'fixed' => 0,
'value' => '132.181.30.3'
}
},
'if_mac' => {
'1' => {
'fixed' => 0,
'value' => '00:11:1A:F2:E1:93'
},
'0' => {
'fixed' => 0,
'value' => '00:11:1A:F2:E1:92'
}
}
};
$VAR1 = [
[
'if_ip',
'1',
'132.181.30.4'
],
[
'if_ip',
'0',
'132.181.30.3'
],
[
'if_mac',
'1',
'00:11:1A:F2:E1:93'
],
[
'if_mac',
'0',
'00:11:1A:F2:E1:92'
]
];