in reply to regex match in list context

Your results are what the regex is supposed to do under both circumstances. In the first case, the "" match failed, so the regex pointer moved over one character and found "," which matched since comma is one of the things you're looking for. After that, the engine is going to keep finding matches with commas.

I think you may have wanted to take the comma out of the [ ] and change + to * to keep empty fields. Like so:

#!/usr/bin/perl -w use strict; my $mm=qq(\"000.E+3\",\"\",\"\",\"\",\"QCA-086_2\",\"-1\",\"P\",\"FALS +E\"); my @p = ($mm=~m/(\"[A-Za-z0-9_\-.+]*\")/g); print map {qq($_\n)} @p; 1;

And then again, there's always the handy split function.