my ($longest) = reduce { length($a) >= length($b) ? $a : $b } /
(
[0-9]
(?:
(?: (?<=0)1 | (?<=1)2 | (?<=2)3 | (?<=3)4 | (?<=4)5
| (?<=5)6 | (?<=6)7 | (?<=7)8 | (?<=8)9 | (?<=9)0
)+
|
(?: (?<=0)9 | (?<=1)0 | (?<=2)1 | (?<=3)2 | (?<=4)3
| (?<=5)4 | (?<=6)5 | (?<=7)6 | (?<=8)7 | (?<=9)8
)+
)
)
/xg;
####
my ($longest) = reduce { length($a) >= length($b) ? $a : $b }
/
(
[0-9]
(?: (?<=0)1 | (?<=1)2 | (?<=2)3 | (?<=3)4 | (?<=4)5
| (?<=5)6 | (?<=6)7 | (?<=7)8 | (?<=8)9 | (?<=9)0
)+
)
/xg,
/
(
[0-9]
(?: (?<=0)9 | (?<=1)0 | (?<=2)1 | (?<=3)2 | (?<=4)3
| (?<=5)4 | (?<=6)5 | (?<=7)6 | (?<=8)7 | (?<=9)8
)+
)
/xg;
####
my $longest =
max
map length,
/
(
(?: 1(?=2) | 2(?=3) | 3(?=4) | 4(?=5) | 5(?=6)
| 6(?=7) | 7(?=8) | 8(?=9) | 9(?=0) | 0(?=1)
)+
|
(?: 1(?=0) | 2(?=1) | 3(?=2) | 4(?=3) | 5(?=4)
| 6(?=5) | 7(?=6) | 8(?=7) | 9(?=8) | 0(?=9)
)+
)
/xg;
if (defined($longest)) {
++$longest;
} else {
$longest = /[0-9]/ ? 1 : 0;
}