#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; use Regexp::Common qw/ RE_num_real /; my $shine = '10,101,110.110101101'; { my $rereal = RE_num_real(-keep, -group=>3, -sep=>',', -base=>2); if( $shine =~ m{($rereal)} ){ dd( $1, $2, $3, $4, $5, $6, ); } } { my $rereal = RE_num_real(-group=>3, -sep=>',', -base=>2); if( $shine =~ m{($rereal)} ){ dd( $1, $2, $3, $4, $5, $6, ); } } { my $rereal = RE_num_real(-group=>3, -sep=>',', -base=>2, -keep); if( $shine =~ m{($rereal)} ){ dd( $1, $2, $3, $4, $5, $6, $7, $8, ); } } __END__ (10, 10, "", 10, 10, undef) ("10,101,110.110101101", undef, undef, undef, undef, undef) ( "10,101,110.110101101", "10,101,110.110101101", "", "10,101,110.110101101", "10,101,110", ".", 110101101, undef, )