server_A, Perl, UK server_A, Word, UK server_A, Outlook, UK server_A, Excel, UK server_B, Reuters, NL server_B, TradeXL, NL server_B, Thompsons, NL server_B, Bloomberg, NL server_B, Tibco, NL server_c, BasketLink, USA server_c, Evolution, USA server_c, Lotus, USA server_c, TIB, USA server_A, Python, UK #### server_A Perl UK Word UK Outlook UK Excel UK Python UK server_B Reuters NL TradeXL NL Thompsons NL Bloomberg NL Tibco NL server_c BasketLink USA Evolution USA Lotus USA TIB USA #### #! c:/perl/bin/perl.exe use strict; open (LST,"c:/work/test_data.lst") || die "\n$!\n"; chomp (my @data_array = ); my $snap_shot; my %seen; my @cleaned_data; foreach my $data ( @data_array) { my $rec; my ($server, @info) = split (/,/,$data); if (! $seen{$server}) { $rec->{Server_Name} = $server; print "$server\n"; $seen{$server}++; print "\t@info\n"; @{$rec->{Apps_Info}} = @info; } else { print "\t@info\n"; @{$rec->{Apps_Info}} = @info; } push (@cleaned_data, $rec); }