DB<138> $_=" x1x2x3x x4x5x"
=> " x1x2x3x x4x5x"
DB<139> ; /x(\d)x(?{print "<$1>\t"})(?!)/
<1> <2> <3> <4> <5>
by placing an _empty_ negative lookahead you are forcing your regex to reject all matches and to backtrack through the whole string.
But the embedded perlcode (which is an experimental feature IIRC) prints the temporary match before the next attempt is started.
edit
as a side note, the same effect can be achieved with "conventional" means (i.e. manipulation of pos)
DB<154> while ( /x(\d)x/g ) { print $1; pos($_) -= length($ &)-1 }
12345
|