my %datahash; while (my $line=) { chomp $line; $line=~s/^\s+//; $line=~s/\s+$//; my ($var,$val0)=split('=',$line,2); $val0='' unless (defined $val0); if ($val0=~m/^\"(.*)\"$/) { $datahash{$var}=$1;} else {$datahash{$var}=$val0;} } use Data::Dumper; print Dumper({datahash=>\%datahash}); __DATA__ Attr num="101" name="Created" desc="Time file was created." type="t" ord="3" value="2017-06-03T11:27:23+01:00" noeq noval= noquotes=noquotes