Trying to improve a working regex
Using "split" is an option as other people have mentioned.  However, using a regex has the added benefit of validating the input data while parsing, so is still worth considering depending on your use-case.

A regex is better used in loop here since we're matching the same pattern repeatedly.  And you should use non-capturing parentheses for the bits you're not interested in capturing. E.g. changing nothing else your code would look like this:

$naNumberGroup = qr/(N\/A|(?:([0-9]{1,3}(?:,[0-9]{3})*) \(([0-9]{1,2}\.[0-9])\%\)))/;
my @outFields;
while ($line =~ m/\s\s+$naNumberGroup/g) {
    if("N/A" eq $1) {
        push @outFields, 'NA', 'NA';
    } else {
        push @outFields, $2, $3;
    }
}
print join(',', @outfields),"\n";


It's worth noting that your code as-is would preserve any commas in the input, therefore breaking your output.  And "100.0%" isn't handled.

If you're wanting to improve readability and maintainability of your regexes, here are some additional things worth changing:


Use the /x modifier to improve readability/maintainability.
Use more intermediate variables to build your regexes.
Avoid having to escape slashes by using qr{...} instead of qr/.../


E.g. 

my $numberGroup = qr{
    (?&lt;number&gt; [0-9,]+ )                # Number with optional commas
    [ ]                                 # Single space
    \( (?&lt;percent&gt; [0-9]+\.[0-9] ) %\) # Percentage in parens
}x;
my $naNumberGroup = qr{
    [ ]{2,}                             # Two or more spaces
    (?: $numberGroup | N/A )            # No need to capture "N/A"
}x;
my @outFields;
while ($line =~ m/$naNumberGroup/xg) {
    my $number  = $+{number}  // 'NA';
    my $percent = $+{percent} // 'NA';
    $number =~ tr/,//d;             # Strip commas
    push @outFields, $number, $percent;
}
if (scalar @outFields == 8) {
    print join(',', @outFields),"\n";
} else {
    # Description line, or invalid line.  You may be able to use
    # another regex to determine which.
}