in reply to Extracting non-consecutive but related items from an array.

Unless I'm overlooking something, you're overcomplicating it
use strict; use warnings; my %clean_data; chomp (my @data_array = <DATA>); for my $data ( @data_array) { my ($server, @info) = split (/,/,$data); $data = \@info; push @{$clean_data{$server}}, $data; } #use Data::Dumper;die Dumper\%clean_data; print $_, $/, map { "\t@$_$/"} @{$clean_data{$_}} for sort keys %clean_data; __DATA__ 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

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.