in reply to Replace only selected characters
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'
|
|---|