in reply to Perl replacement for choice.com
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, |
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Perl replacement for choice.com
by jwkrahn (Abbot) on Mar 03, 2013 at 10:17 UTC | |
Re^2: Perl replacement for choice.com
by onelander (Sexton) on Mar 02, 2013 at 14:23 UTC | |
Re^2: Perl replacement for choice.com
by onelander (Sexton) on Mar 02, 2013 at 14:37 UTC |
In Section
Cool Uses for Perl