Why not just change the input string with s/""/"/g and the like. Then you can extract text between single quotes. Below you can see my attempt to extract the quoted data (tested).
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>)
{
chomp;
# remove the pesky quotes at the beginning and end
s/^"//;
s/"$//;
# change all doubled quotes into just singles
s/""/"/g;
print $_ . "\n";
}
__DATA__
""
"a"""""
"a""b""c""d""f"
"This is a ""test"""
"Here we have """"a nested set of double-quoted quotes"" or whatever."
+""
"Harvey ""the Screwdriver"" Ledbetter"
Output:
a""
a"b"c"d"f"
This is a "test"
Here we have ""a nested set of double-quoted quotes" or whatever."
Harvey "the Screwdriver" Ledbetter