Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re: Replacing with comma

by Athanasius (Canon)
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";


16:38 >perl 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?

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2016-02-09 14:15 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (316 votes), past polls