in reply to Parsing pipe-delimited text that contains pipes

AnomalousMonk implied it, I tell you explicitly: both Text::CSV and Text::CSV_XS can handle vertical-bar-separated-values, the options to control this behaviour are sep_char and sep.