I stumbled acros the following problem while writing code to characterize numbers. I want to capture those numbers that consists of runs of consecutive digits such as 123 or 4567 (any length > 1 and < 10). Of course there are many ways to do this, but I tried the following and it works nicely:
with as output:#!perl use strict; use warnings; while (<DATA>) { chomp($_); print "$_ okay\n" if /^(\d)((??{$+ + 1}))+$/; } __DATA__ 234 213 12345
as expected. However, if I include use warnings; as I usually do, I get the following warning:234 okay 12345 okay
((??{$+ + 1}))+ matches null string many times before HERE mark in regex m/^(\d)((??{$+ + 1}))+ << HERE $/ at ./test.pl line 8.
Could anyone enlighten me as to (1) the source of the warning, and (2) how to reformulate the regexp to get rid of it?
I'm aware that the (??{...}) construct is experimental and won't use it in production code, but it triggers my curiosity.
Thanks in advance, -gjb-
In reply to Code in regexp by gjb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |