Простите, не учел возможность присутствия цифр после скобок, вот так кажется
работает:

    my @chanks;
    my $str = "{bla1 {bl}a2} }123".
            "{bla3 {b{la4} }123".
            "{{bla5 {bla6} }bla7}".
            "{{bla8 {bla9} }bla10}123";

    $str =~ /^
        ((?: \{.+?\}\d* )(?=\{))

        (
         (?: \{.+?\}\d*(?=\{) ) (?{ push @chanks, $2 if $2; })
        )+

        (\{.+?\}\d*\z)
    /x;

    print join "\n", $1, @chanks, $2 , $3;
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить