#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Regexp::Common;
use constant SUCCEED => qr{(?=)};
use constant FAIL => qr{(?!)};
my $QUOTED = $RE{quoted};
my $NUM = $RE{num}{real};
my $VALUE = do {
use re 'eval';
qr/(?:$QUOTED|$NUM)(??{'.' eq $+ ? FAIL : SUCCEED})/;
};
my $text = 'name => "foo", fav.num => 3';
my @text = split /($VALUE)/ => $text;
print Dumper \@text;
####
$VAR1 = [
'name => ',
'"foo"',
', fav',
'.',
'num => ',
'3'
];
####
$VAR1 = [
'name => ',
'"foo"',
', fav.num => ',
'3'
];