for my $k (@sorted_keys) {
$hash{$type}{$k}{data} = shift @mydata;
}
####
my @subfields = qw( REQ POS LENGTH data FILTER );
my @sorted_keys = sort qw( field1 field2 );
my @mydata = ( [ 'Y', 34, 10, ' ' x 10, \&default_filter ],
[ 'Y', 35, 10, ' ' x 10, \&default_filter ] );
my $type = 'that_type';
for my $k (@sorted_keys) {
@{ $hash{$type}{$k} }{ @subfields } = @{ shift @mydata };
}
####
use strict;
my @subfields = qw( REQ POS LENGTH data FILTER );
my @mydata = ( [ this_type =>
[ 'N', 34, 10, ' ' x 10, \&default_filter ] ],
[ that_type =>
[ 'Y', 34, 10, ' ' x 10, \&default_filter ],
[ 'Y', 35, 10, ' ' x 10, \&default_filter ] ],
);
my %hash;
for my $d ( @mydata ) {
my $type = shift @$d;
for my $data ( @$d ) {
my $field;
@{ $field }{ @subfields } = @$data;
push @{ $hash{ $type } }, $field;
}
}
__END__
DB<2> x \%hash
0 HASH(0x82ea2dc)
'that_type' => ARRAY(0x8449fa0)
0 HASH(0x8449f10)
'FILTER' => CODE(0x814cdd4)
-> &CODE(0x814cdd4) in ???
'LENGTH' => 10
'POS' => 34
'REQ' => 'Y'
'data' => ' '
1 HASH(0x8449fac)
'FILTER' => CODE(0x814cdd4)
-> REUSED_ADDRESS
'LENGTH' => 10
'POS' => 35
'REQ' => 'Y'
'data' => ' '
'this_type' => ARRAY(0x8449ef8)
0 HASH(0x8449e20)
'FILTER' => CODE(0x814cdd4)
-> REUSED_ADDRESS
'LENGTH' => 10
'POS' => 34
'REQ' => 'N'
'data' => ' '
####
$hash{ that_type }[ 1 ]{ LENGTH }
####
\&default_filter()
####
\&default_filter