Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Replacing with comma

by Athanasius (Monsignor)
on Dec 27, 2012 at 06:51 UTC ( #1010456=note: print w/ replies, xml ) Need Help??


in reply to Replacing with comma

The {$r} in the regex is acting as a quantifier, not an index. It would be better to use split, splice, and join, like this:

#! perl use Modern::Perl; my $separator = '|'; my $replacement = ','; my $target_count = 2; my $line = '1|2|3'; my $ft_count = 0; ++$ft_count while $line =~ /\Q$separator\E/g; if ($ft_count == $target_count) { my @data = split /\Q$separator\E/, $line; splice(@data, $target_count - 1, 2, "$data[$target_count - 1]$repl +acement$data[$target_count]"); $line = join($separator, @data); } print $line, "\n";

Output:

16:38 >perl 453_SoPW.pl 1|2,3 16:46 >

See perlre for \Q...\E.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,


Comment on Re: Replacing with comma
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (12)
As of 2014-09-30 12:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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











    Results (366 votes), past polls