in reply to escape each backslash of each array element

Not the most elegant, but this does the job:
$_=join qq#\\\\#,split(/\\/,$_,-1);
As far as shedding light on your code:
The problem is that the "g" tag, by itself does not repeat replacement.

You need to put the substitution into a loop until no more substitutions are made.

The problem with that approach is that (for me) that loops infinitely, as it discovers more "\\" replacing "\".

I'm sure a wiser monk will provide the appropriate elegant hack.

Here is another approach, using substitution:

>perl -e "my @s=qw(\\\\c\\c\\ d\\d aa bb); for my $x(@s){($y=$x)=~ s#( +\\+)#$1$1#g;print qq{$y=$x;\n}}" \\\\c\\c\\=\\c\c\; d\\d=d\d; aa=aa; bb=bb;
Update:Struck incorrect statements, and improved second sample code.

     Syntactic sugar causes cancer of the semicolon.        --Alan Perlis