#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use Data::Dumper;
my @out;
open my $in_fh, '<', 'pm_1054339_data.txt';
while (<$in_fh>) {
chomp;
my ($key, $value) = split /=/;
for ($key) {
/component/ && do { push @out, { $key => $value }; last };
/version/ && do { $out[-1]{$key} = $value; last };
/sourcefile/ && do { push @{$out[-1]{order}}, $value; last };
/sourcesum/ && do { $out[-1]{sources}{$out[-1]{order}[-1]} = $value };
}
}
close $in_fh;
print Dumper \@out;
####
$ cat pm_1054339_data.txt
component=HF
version=NULL
sourcefile=filename1
sourcesum=checksumfile1
sourcefile=filename2
sourcesum=checksumfile2
sourcefile=filename3
sourcesum=checksumfile3
component=SVM
version=10.0.70.102
sourcefile=filename4
sourcesum=checksumfile4
component=HF_2
version=NULL
sourcefile=file10
sourcesum=checksum10
sourcefile=file2
sourcesum=checksum2
sourcefile=file3
sourcesum=checksum3
####
$ pm_1054339_data.pl
$VAR1 = [
{
'order' => [
'filename1',
'filename2',
'filename3'
],
'sources' => {
'filename3' => 'checksumfile3',
'filename1' => 'checksumfile1',
'filename2' => 'checksumfile2'
},
'version' => 'NULL',
'component' => 'HF'
},
{
'version' => '10.0.70.102',
'order' => [
'filename4'
],
'sources' => {
'filename4' => 'checksumfile4'
},
'component' => 'SVM'
},
{
'version' => 'NULL',
'sources' => {
'file10' => 'checksum10',
'file3' => 'checksum3',
'file2' => 'checksum2'
},
'order' => [
'file10',
'file2',
'file3'
],
'component' => 'HF_2'
}
];