我正在生成一个哈希并将该哈希推入数组中。末尾的数组显示为
$VAR1 = [
{
'Count' => 1,
'maint_wf' => 'WFblabla',
'lines' => {
'line1' => {
'ort' => 'city_x',
'lbz' => 'L1city_x'
}
},
'receive_date' => 'Di, 3 Sep 2013 12:16:43 +0200',
'maint_date' => '02.09.2013',
'calendar' => {
'dtend' => '20130902T0530',
'dtstart' => '20130902T0100'
}
},
{
'Count' => 3,
'maint_wf' => 'WFbla',
'lines' => {
'line3' => {
'ort' => 'city1',
'lbz' => 'L1_city1'
},
'line1' => {
'ort' => 'city2',
'lbz' => 'L1_city2'
},
'line2' => {
'ort' => 'city2',
'lbz' => 'L2_city2'
}
},
'receive_date' => 'Mi, 4 Sep 2013 08:56:35 +0200',
'maint_date' => '03.09.2013',
'calendar' => {
'dtend' => '20130903T0530',
'dtstart' => '20130903T0300'
}
},
...
];
我如何计算键“ ort”的重复值(即存在多少“ ort” =>“ city2”?)然后仅显示键“ lbz”的对应值?
创建一个为每个ort值计算可能的lbz值的哈希可以帮助您:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my $arrR = [
{
'Count' => 1,
# ...
];
my %ort;
for my $hashR (@$arrR) {
my @lines = values %{ $hashR->{lines} };
for my $line (@lines) {
$ort{ $line->{ort} }{ $line->{lbz} }++;
}
}
print Dumper \%ort;
输出:
$VAR1 = {
'city2' => {
'L1_city2' => 1,
'L2_city2' => 1
},
'city_x' => {
'L1city_x' => 1
},
'city1' => {
'L1_city1' => 1
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句