in reply to array substr or what?

I'm going to guess you are using the 0 argument form of split, which splits on whitespace. Instead of
foreach (@lines) { @results = split; # splits on whitespace ... # do stuff with results }
use
foreach (@lines) { @results = split /\|/; # splits on pipe char ... # do stuff with results }
Perhaps you tried split /|/ and had trouble because you didn't backslash the |, which is a special character in regex's ----- 'perldoc -f split' will explain in more detail.