in reply to Array accessing

AAAAAGGGHHHH! Please, please, please enclose code you post in <code> </code>> - otherwise it is very, very hard to read.

And use preview so that you can see when your post is unreadable.

Now, if I see correctly, inside your foreach loop, you're doing:

foreach $i ( 0 .. $#temp ) { $data_line = $temp[$i]; $data_line =~ s/^\s+(.*)/$1/; #Remove the leading white spaces @data = split /\s+/, $data_line; $data[$i] = split /\s+/, $data_line; }
Look at the last two lines of the loop. First you set all the elements of @data to the parts of $data_line, and then you overwrite one of them (whichever one $i is pointing to) with the number of the fields in $data_line. (That's what split returns when you call it in scalar context).

Could that be the source of your problems?