These are three tokens. _and |and _, and it only works in IRB or other environments where defined _.
It:
puts _|_
... identical to this ...
puts _ | _
... which is a simple bitwise OR variable _with itself.
The only reason I can do this is that it will turn nilinto falsein cases where you need a real logical value, and not just a fake value:
irb(main):001:0> nil | nil
=> false
a | a a , |, .