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; #### for my $LSS ( sort keys %map ) { print "LSS: $LSS\n"; for my $LUNS ( sort keys %{ $map{$LSS} } ) { print " LUN: $LUNS LSS: $LSS\n\n"; for my $hosts ( sort @{ $map{$LSS}{$LUNS} } ) { print " $hosts\n"; } print "\n"; } }