foreach my $row ($te->rows) { my $count = 0; foreach my $item (@$row) { $count++; chomp($item); $$row[0] =~ s/(.*)_.*/$1/; # HOST $$row[1] =~ s/LSS: 0x0*(.*)/$1/; # LSS $$row[2] =~ s/(.*)-.*/$1/; # LUN $$row[3] =~ s/^0*(.*) GB/$1/; # Size in GB push ( @{$map{$$row[1]}{$$row[2]}}, $$row[0] ) unless $known{$$row[1]}{$$row[2]}{$$row[0]}++; } } print Dumper %map;