in reply to scalar values from split

Very simple, you didn't escape the | character in the split (need to remember that it is a regexp you are using):
my ($item_number, $price, $short_desc, $long_desc) = split /\|/;
gav^