以下に示すように、データを含むdata.txtがあります。3 つの定数 ID 100、200、300 を持つ約 100 の名前があり、それぞれに 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
値を格納するためにハッシュを作成しましたが、現在、私のコードは最初の 2 つのエントリを上書きし、最後のエントリを格納しています。最初の 2 つのエントリも保存するにはどうすればよいですか。コードを簡略化できるかどうか教えてください。
#!/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;
}