A comment on the regexen:
# regex to add a comma after each char # i believe you can think of it starting # at the second character since # ?<= means look to the left of the current # position # the . means to look at one character # the () are required to capture each character $show_choices =~ s/(?<=.)/,/g; $show_choices =~ s/,$//g; # remove the last comma
Actually, there is no capturing being done in the first regex; the parentheses are there only for grouping, i.e. to show where the positive look-behind assertion ends. (Try adding a $1 to the replacement part, and you will get a series of error messages beginning Use of uninitialized value $1.)
The first regex could also be written as:
$show_choices =~ s/(.)/$1,/g;
which does capture each character.
The two regexen can be combined into one using a negative look-ahead assertion:
$show_choices =~ s/(.)(?!$)/$1,/g;
See “Look-Around Assertions” under Extended Patterns in perlre.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Perl replacement for choice.com
by Athanasius
in thread Perl replacement for choice.com
by onelander
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |