If my real problem were as easy as my toy script, I'd certainly follow one of your above solutions. However, it's more like this:
my (
$field1,
$field2,
#...
$field25,
@field26[0..25],
$field27,
$field28,
#...
) = split(/\|/);
This way, it makes it obvious that I'm grabbing a fixed number from the split return. I appreciate the terseness in your solutions, though. Now that I know that it was a problem with my test data and not my approach, I'll be using something like what I originally posted.
thor
Feel the white light, the light within
Be your own disciple, fan the sparks of will
For all of us waiting, your kingdom will come