我有 data.txt 的数据,如下所示。我有大约一百个名字,有 3 个常量 id 100、200、300,每个名字都有 32 个数据值。
NAME: xyz
ID: 100
DATA: 10 15 99 13 ...
ID: 200
DATA: 23 45 78 90..
ID: 300
DATA: 45 67 89 56
NAME: abc
ID: 100
DATA: 2 4 787 8..
ID: 200
DATA: 12 14 17..
ID: 300
DATA: 45 34 22..
我需要将此数据写入另一个文件,看起来像
xyz_100, xyz_200,xyz_300,abc_100,...
10 , 23 , 45 ,2
15 , 45 ,67 ,4
我构建了一个散列来存储值,但现在我的代码会覆盖前两个条目并存储最后一个条目。我怎样才能保存前两个条目,如果我可以简化代码,请告诉我。
#!/usr/local/bin/perl
use diagnostics;
use strict;
use warnings;
my @avar_names;
my %record;
local $/ = '';
open my $fh, '<', 'datalog.dat' or die "failed: $!";
while (<$fh>) {
chomp;
my %avar;
while (/^([A-Z:]+):\s*(.*)/mg) {
$avar{$1} = $2;
}
my $avar_name = "$avar{NAME}_$avar{ID}";
push @avar_names, $avar_name;
$record{$avar_name} = $avar{DATA};
use Data::Dumper;
print Dumper \%record;
}