use warnings; use strict; my %atts; my $att; while () { chomp; $att = $1 if /^attribute:\s+(.+)/; $atts{$att} = $1 if /^value:\s+(.+)/; } use Data::Dumper; $Data::Dumper::Sortkeys=1; print Dumper(\%atts); __DATA__ AVUs defined for dataObj 3a/73/2c/metadata.csv: attribute: dcterms:created value: 2014-08-13T00:00:10 units: ---- attribute: control value: 0 units: ---- attribute: md5 value: 3a732cd0fddaa80fa65fcf28664eaf6d units: ---- #### $VAR1 = { 'control' => '0', 'dcterms:created' => '2014-08-13T00:00:10', 'md5' => '3a732cd0fddaa80fa65fcf28664eaf6d' };