Se as aspas não puderem ser aninhadas nem vazadas, basta dividir a entrada entre aspas, modificar cada elemento ímpar e juntar de volta com aspas:
#!/usr/bin/perl
use warnings;
use strict;
my $input = '"----, ----",, ----, ----,,"",start quote," starting
next line with end quote, ",---,, "--- ,", "begin quote ,,
,,nxt line end quote ",----, ----",, ----, "----,,"---","",
---- ,","----, ----",,"", --",--,----,,,';
my @segments = split /"/, $input; # fix SO syntax highlighting: "
s/,/@/g for @segments[ grep $_ % 2, 0 .. $#segments ];
print join '"', @segments;