my $range = "1..3,7..9"; my @array; while($range =~ /(\d+)\.\.(\d+)/g ){ my( $left , $right ) = ( $1, $2 ); push @array, $left .. $right; } print "@array\n"; __END__ 1 2 3 7 8 9