There may be much more than a little difference. Consider the output from the following program when run under perl5.005:
my $good = <<EOT;
a quote " with some text after it and then another quote "
my $bad = <<EOT;
a quote " with some text after it but without another quote
my $obvious = qr/"(?:\\.|[^"\\]+)*"/;
my $unrolled = qr/"[^"\\]*(?:\\.[^"\\]*)*"/;
$| = 1;
print "\$good =~ \$unrolled";
print $good =~ $unrolled;
print "\$good =~ \$obvious";
print $good =~ $obvious;
print "\$bad =~ \$unrolled";
print $bad =~ $unrolled;
print "\$bad =~ \$obvious";
print $bad =~ $obvious;
The problem should become clear by the time it finishes. ;)
Jeffrey Friedl goes into much more detail in Mastering Regular Expressions, which is where I grabbed the regexes I used above.
However, if you run this program under perl5.6, you won't have as much time to figure out the issue, because there are improvements to the regex engine in that version which fix the problem!