$ perl -e'qr/(?{rand < 5})/' 2>&1 |splain Warning: Use of "rand" without parentheses is ambiguous at (re_eval 1) line 1 (# 1) (S ambiguous) You wrote a unary operator followed by something that looks like a binary operator that could also have been interpreted as a term or unary operator. For instance, if you know that the rand function has a default argument of 1.0, and you write rand + 5; you may THINK you wrote the same thing as rand() + 5; but in actual fact, you got rand(+5); So put in parentheses to say what you really mean. panic: top_env (#2) (P) The compiler attempted to do a goto, or something weird like that.