in reply to Completely lost - 'Use of uninitialized value in pattern match...' error :(

I blame the line:

foreach my $line ($source[2]) {

It doesn't make any sense to loop over it, for starters. As well, if you're reading from a socket (as japhy implies), how do you know how many lines you'll get? I don't see any reason to assume you'll get at least three, so you're probably skipping over the real data in the first couple of elements (and is $/ on your platform the same as the end-of-line of your network transfer protocol?). Try:

for my $line ( @source ) {

... as a better approach.