It's not an operator; it's delimiting the argument list for the block. The bars are equivalent to the parens in def foo(x). You can't write it as {print x |x} for the same reason this:
def foo(x)
puts "It's #{x}"
end
can't be rewritten as this:
def foo
puts "It's #{x}" (x
end