#!/usr/bin/perl
use strict;
use warnings;
my $string = "111s11111s11111s";
sub skip_greedy {
print "Greedy matching, skip $skips - ";
print $string =~ /^(.*)s(?(?{$skips-- > 0})(*FAIL))/ ? "$1\n"
: "no match\n";
}
skip_greedy($string, $_) for (0..3);
sub all_matches {
my ($string) = @_;
$string =~ /^(.*)s(?{push @seqs, $1})(*FAIL)/;
}
use Data::Dumper;
print Dumper
[ all_matches
($string) ]; print Dumper
[ all_matches
($string) ];
IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkc3RyaW5nID0gIjExMXMxMTExMXMxMTExMXMiOwoKc3ViIHNraXBfZ3JlZWR5IHsKICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKICAgIGxvY2FsIG91ciAkc2tpcHMgPSBzaGlmdDsKCiAgICBwcmludCAiR3JlZWR5IG1hdGNoaW5nLCBza2lwICRza2lwcyAtICI7CgogICAgcHJpbnQgJHN0cmluZyA9fiAvXiguKilzKD8oP3skc2tpcHMtLSA+IDB9KSgqRkFJTCkpLwogICAgICAgID8gIiQxXG4iCiAgICAgICAgOiAibm8gbWF0Y2hcbiI7Cn0KCnNraXBfZ3JlZWR5KCRzdHJpbmcsICRfKSBmb3IgKDAuLjMpOwoKc3ViIGFsbF9tYXRjaGVzIHsKICAgIG15ICgkc3RyaW5nKSA9IEBfOwoKICAgIGxvY2FsIG91ciBAc2VxczsKICAgICRzdHJpbmcgPX4gL14oLiopcyg/e3B1c2ggQHNlcXMsICQxfSkoKkZBSUwpLzsKCiAgICBteSBAc29ydGVkID0gc29ydCB7bGVuZ3RoICRiIDw9PiBsZW5ndGggJGF9IEBzZXFzOwoKICAgIHJldHVybiBAc29ydGVkOwp9Cgp1c2UgRGF0YTo6RHVtcGVyOwoKcHJpbnQgRHVtcGVyIFsgYWxsX21hdGNoZXMoJHN0cmluZykgXTsKcHJpbnQgRHVtcGVyIFsgYWxsX21hdGNoZXMoJHN0cmluZykgXTs=
Greedy matching, skip 0 - 111s11111s11111
Greedy matching, skip 1 - 111s11111
Greedy matching, skip 2 - 111
Greedy matching, skip 3 - no match
$VAR1 = [
'111s11111s11111',
'111s11111',
'111'
];
$VAR1 = [
'111s11111s11111',
'111s11111',
'111'
];