Another, not necessarily better, way to "replace every x after the first with y" (needs Perl 5.10+):
>perl -wMstrict -le
"for my $s (
'ABC,XYZ PERL,, IS, AWESOME, INNIT',
',ABC,XYZ PERL,, IS, AWESOME, INNIT,',
',,ABC,XYZ PERL,, IS, AWESOME, INNIT,',
) {
print qq{ in: '$s'};
;;
(my $t = $s) =~ s{ (?: \A [^,]* , (*SKIP)(*FAIL))? , }{}xmsg;
print qq{out: '$t'};
print '';
}
"
in: 'ABC,XYZ PERL,, IS, AWESOME, INNIT'
out: 'ABC,XYZ PERL IS AWESOME INNIT'
in: ',ABC,XYZ PERL,, IS, AWESOME, INNIT,'
out: ',ABCXYZ PERL IS AWESOME INNIT'
in: ',,ABC,XYZ PERL,, IS, AWESOME, INNIT,'
out: ',ABCXYZ PERL IS AWESOME INNIT'