Warning: Use of "rand" without parentheses is ambiguous at mytest.pl line 4 (#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. #### use strict; use warnings; use diagnostics; my $string = "1230000000"; print $string =~ m/123(?{(pos <= length($_)*.5) ? '(?=)':'(?!)'})(??{$^R})/ ? "Matched.\n" : "Didn't match.\n"; __OUTPUT__ Warning: Use of "pos" without parentheses is ambiguous at (re_eval 2) 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 #### panic: restartop (P) Some internal routine requested a goto (or something like it), and didn't supply the destination.