in reply to File Manipulation

Hi,
You have been given great solutions, but in the spirit of "tim today", you could also check this (a somewhat modifications to the solutions already given):

use strict; use warnings; my %logger; my $key; while(<DATA>){ s/\s+$//; if(/\[(.*)\]/){ $key = $1; }else{push @{$logger{$key}}, $_;} } print $_,":", join ("," => @{$logger{$_}}),$/ for sort {$a cmp $b} keys %logger; __DATA__ [server1] /tmp/location1/file.log /tmp/location2/file.log [server2] /usr/loc1/file.log /usr/loc2/file.log [server3] /citrix/dir3/file.log
NOTE:
Since, the key only changes, when the name of server is seen, and that until the next one. It works perfectly well.
You could also see perldsc

If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me