use strict; use warnings; my $line; while () { chomp; if (/\[(server\d+)\]/) { print $line, "\n" if defined $line; $line = $1 . ": "; } else { $line .= $_; $line .= ','; } } print $line, "\n"; __DATA__ [server1] /tmp/location1/file.log /tmp/location2/file.log [server2] /usr/loc1/file.log /usr/loc2/file.log [server3] /citrix/dir3/file.log