in reply to scalar values from split

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:~$