On Sat, 11 Jun 2011 09:52:38 +0300, Ivan Petrov wrote:

Уважаемое сообщество,
Доброго времени суток!

Посоветуйте,
как лучше (эффективнее) разобрать строку вида:

$_ = '{any symbol}{any symbol}1{any symbol}2...';

на фрагменты
{any symbol}
{any symbol}1
{any symbol}2
...

Сейчас через Regexp::Common делаю так:

my @f = /$RE{balanced}{-parens=>'{}'}/g;

какой-то изврат

Не согласен.

'any symbol' --- могут быть \w \d, а также
парные сочетания скобок ()[]{} и вложенные тоже
:)

но получаю только
{any symbol}
{any symbol}
{any symbol}
...

и не знаю можно ли как то указать, что
закрывающаяся фигурная скобка может идти с \d*
Пробовал
/$RE{balanced}{-parens=>"{}\d*"}/g;
но это не работает
:(

Спасибо.


$ perl test.pl
$VAR1 = [
          '{any symbol}',
          '{any symbol}1',
          '{any symbol}2'
        ];
$ cat test.pl

#!/usr/bin/perl

use warnings;
use strict;

use Data::Dumper;

my $str = '{any symbol}{any symbol}1{any symbol}2';
my @items = $str =~ /(\{[^}]*\}\d*)/g;

К сожалению условия [^}] не должно быть
:(

print Dumper \@items;

можно еще пробелы добавить, если надо
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить