in reply to Grabbing anything between pipe delimiters

Your regular expressions are probably matching too much, and I'm guessing that you are seeing some pipe characters in the stuff in $1 and so on. You want to make the quantifiers non-greedy so they stop matching when they find the thing that comes after them.

@matches = m/(.*?)\|/g;

But you might want split()

@matches = split m/\|/;

As for reading characters into a variable, if you are reading from a filehandle, read() may be what you are after. If you are getting the characters from another scalar, you probably want substr() and index(). See the perlfunc page for the details.

Good luck!

--
brian d foy <bdfoy@cpan.org>