Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Perl replacement for

by Athanasius (Monsignor)
on Mar 02, 2013 at 07:21 UTC ( #1021396=note: print w/ replies, xml ) Need Help??

in reply to Perl replacement for

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,

Comment on Re: Perl replacement for
Select or Download Code
Re^2: Perl replacement for
by onelander (Sexton) on Mar 02, 2013 at 14:23 UTC
    Thank you very much for the correction. It is much appreciated.
Re^2: Perl replacement for
by onelander (Sexton) on Mar 02, 2013 at 14:37 UTC
    Code updated to reflect the suggested changes.
Re^2: Perl replacement for
by jwkrahn (Monsignor) on Mar 03, 2013 at 10:17 UTC

    You don't have to capture a character at all:

    $show_choices =~ s/(?<=.)(?=.)/,/g;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1021396]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (12)
As of 2014-09-17 10:04 GMT
Find Nodes?
    Voting Booth?

    How do you remember the number of days in each month?

    Results (71 votes), past polls