You are using a string literal rather than a regular expression literal, so the \ gets removed by the double-quoted string handling code before it gets passed to the regex compiler. Use a regex literal instead:
$ perl -wle 'print join ",", split /\|/, "abc|def"'
abc,def
$
Dave.