use Modern::Perl; use Data::Dump qw /dump/; my %hash; while () { chomp; my ($item, $sequence, $value) = m/(aixFsMountPoint|aixFsSize|aixFsFree)\.(\d+)\s=\s"?([^"]*)/; next unless $item; $hash{$item}[$sequence] = $value; } say dump(\%hash); __DATA__ actual STDOUT: aixFsMountPoint.1 = "/" aixFsMountPoint.2 = "/usr" aixFsMountPoint.3 = "/var" aixFsMountPoint.4 = "/tmp" aixFsMountPoint.5 = "/local.home" aixFsMountPoint.6 = "/admin" aixFsMountPoint.7 = "/proc" aixFsMountPoint.8 = "/opt" aixFsMountPoint.9 = "/var/adm/ras/livedump" aixFsMountPoint.10 = "/net" aixFsMountPoint.11 = "/net/nim01at/opt/CBC-CFG" aixFsMountPoint.12 = "/net/nim01at/opt/CBC-CFG" aixFsSize.1 = 3072 aixFsSize.2 = 8512 aixFsSize.3 = 10240 aixFsSize.4 = 4096 aixFsSize.5 = 64 aixFsSize.6 = 128 aixFsSize.7 = 0 aixFsSize.8 = 4096 aixFsSize.9 = 3072 aixFsSize.10 = 0 aixFsSize.11 = 7168 aixFsSize.12 = 7168 aixFsFree.1 = 2631 aixFsFree.2 = 3232 aixFsFree.3 = 2373 aixFsFree.4 = 1923 aixFsFree.5 = 46 aixFsFree.6 = 127 aixFsFree.7 = 0 aixFsFree.8 = 3000 aixFsFree.9 = 3071 aixFsFree.10 = 0 aixFsFree.11 = 3463 aixFsFree.12 = 3463