gjb has asked for the wisdom of the Perl Monks concerning the following question:
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-
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Code in regexp
by Abigail-II (Bishop) on Nov 28, 2002 at 17:43 UTC | |
by demerphq (Chancellor) on Nov 28, 2002 at 19:46 UTC | |
by Abigail-II (Bishop) on Nov 29, 2002 at 09:50 UTC | |
by demerphq (Chancellor) on Nov 29, 2002 at 11:33 UTC | |
by Abigail-II (Bishop) on Nov 29, 2002 at 12:18 UTC | |
by Jasper (Chaplain) on Nov 29, 2002 at 11:06 UTC | |
by Jasper (Chaplain) on Dec 12, 2002 at 16:27 UTC | |
|
Re: Code in regexp
by broquaint (Abbot) on Nov 28, 2002 at 17:25 UTC | |
|
Re: Code in regexp
by pg (Canon) on Nov 28, 2002 at 18:14 UTC | |
|
Re: Code in regexp
by pg (Canon) on Nov 29, 2002 at 05:54 UTC |