#! 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]$replacement$data[$target_count]"); $line = join($separator, @data); } print $line, "\n";