Я хочу увеличить значение хеша, начиная с 0 для каждого $ COMMUNITY, я определяю массив @indicator от 0 до того же индекса массива @NAME и нажимаю его, чтобы он стал значением, но это не так точно, и я не знаю, как это сделать. Я очень хорошо знаю, что значение не в порядке, потому что место в массиве не организовано сначала, но как это сделать точно, а затем,
Как напечатать каждое первое значение подэлемента $ FAMILY.
например,
community 0 = name 0 4 7
community 1 = name 0 3 8
community 2 = name 0 3 6
#!/usr/bin/perl
use warnings;
use strict;
use Tie::Autotie 'Tie::IxHash';
my @NAME= qw(AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AD CD CE CF BD BE);
my @FAMILY= qw(A A A B B B C C C A A A B B B C C C A A A B B B C C C A C C C B B);
my @COMMUNITY= qw(0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 0 2 2 2 1 1);
tie my %COMMUNITY_FAMILY_NAME,'Tie::IxHash' ;
my @indicator;
foreach (my $x=0;$x<=scalar @NAME;$x++)
{
push @indicator,$x;
}
push @{ $COMMUNITY_FAMILY_NAME{ $COMMUNITY[$_] }{ $FAMILY[$_]}{$NAME[$_]} }, $indicator[$_] for 0 .. $#NAME;
print Dumper(\%COMMUNITY_FAMILY_NAME);
Выход:
$VAR1 = {
'0' => {
'A' => {
'AA' => [
0
],
'AB' => [
1
],
'AC' => [
2
],
'AD' => [
27
]
},
'B' => {
'BA' => [
3
],
'BB' => [
4
],
'BC' => [
5
]
},
'C' => {
'CA' => [
6
],
'CB' => [
7
],
'CC' => [
8
]
}
},
'1' => {
'A' => {
'AA' => [
9
],
'AB' => [
10
],
'AC' => [
11
]
},
'B' => {
'BA' => [
12
],
'BB' => [
13
],
'BC' => [
14
],
'BD' => [
31
],
'BE' => [
32
]
},
'C' => {
'CA' => [
15
],
'CB' => [
16
],
'CC' => [
17
]
}
},
'2' => {
'A' => {
'AA' => [
18
],
'AB' => [
19
],
'AC' => [
20
]
},
'B' => {
'BA' => [
21
],
'BB' => [
22
],
'BC' => [
23
]
},
'C' => {
'CA' => [
24
],
'CB' => [
25
],
'CC' => [
26
],
'CD' => [
28
],
'CE' => [
29
],
'CF' => [
30
]
}
}
};
Ожидаемый результат:
$VAR1 = {
'0' => {
'A' => {
'AA' => [
0
],
'AB' => [
1
],
'AC' => [
2
],
'AD' => [
3
]
},
'B' => {
'BA' => [
4
],
'BB' => [
5
],
'BC' => [
6
]
},
'C' => {
'CA' => [
7
],
'CB' => [
8
],
'CC' => [
9
]
}
},
'1' => {
'A' => {
'AA' => [
0
],
'AB' => [
1
],
'AC' => [
2
]
},
'B' => {
'BA' => [
3
],
'BB' => [
4
],
'BC' => [
5
],
'BD' => [
6
],
'BE' => [
7
]
},
'C' => {
'CA' => [
8
],
'CB' => [
9
],
'CC' => [
10
]
}
},
'2' => {
'A' => {
'AA' => [
0
],
'AB' => [
1
],
'AC' => [
2
]
},
'B' => {
'BA' => [
3
],
'BB' => [
4
],
'BC' => [
5
]
},
'C' => {
'CA' => [
6
],
'CB' => [
7
],
'CC' => [
8
],
'CD' => [
9
],
'CE' => [
10
],
'CF' => [
11
]
}
}
};