I believe you're running into some *special* cases when using a double-quoted literal and the pipe symbol. Normally the pipe symbol would be used for ORing your pattern. "i|A" would split on the characters i or A. When you want the pattern to match the pipe symbol, you would need to escape it with a backslash "\|" - however in this case when you double-quote and backslash, it is not escaped -- you need to single quote and backslash. I normally opt to use a regex as the PATTERN in split -- to me it's more readaable:
my( $first, $second ) = split /\|/, $string;
but that's just me.