You already get the values as a list of scalars, but you don't split on what you think you split on.
With your regex,
/|/, you match either nothing or nothing (
/foo|bar/ matches foo or bar), so you're actually getting individual characters instead of the values you expect to get.
Escape the pipeline so it'll match a literal pipeline, and it'll work as expected:
split /\|/, ....
hth.
2;0 juerd@ouranos:~$ perl -e'undef christmas'
Segmentation fault
2;139 juerd@ouranos:~$