Well, the good news is that s/,,,/,/g
should definitely work. The bad news is that your script is doing something weird. :P A couple things to be aware of:
you don't need to make @line an array. You can just write something like foreach my $line (@data).
you are using $line for both foreach loops. You are trying to use the same namespace for two different things. Maybe change the second one to foreach my $L1_line split...
Disregard this: The actual reason you aren't substituting properly is that you are printing @L1, but that array never gets modified by your substitution which acts on $line.