You seem to be going to great lengths to read the file line by line, but the recontruct a single string only to split it back up again.
Why not keep the lines separate to start with? for example
while(<DATA>) {
chomp;
last if /^"EOS"$/;
push @data, $_
}
Also, in your output code you call split with no arguments. That will split $_ on whitespace. But from what you are expecting as output that is not what you want.
It would seem that your fields are contained within pairs of "'s
so you could just do
my($first_name,$last_name,$address,$city,$state,$phone) = /"([^"]*)"/g
Which will pick out each the strings between " pairs