Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Perl replacement for

by Athanasius (Chancellor)
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,

Replies are listed 'Best First'.
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;
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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1021396]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2018-06-25 01:27 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.