update: again... I mis-read the direction the first time. Ikegami got it right the first time. The example works out the same whether counting from the left or right. But yes, use negative numbers to count from the right. (-1) is the last character on the right, use positive numbers to count from the left and (0) is the first character from the left, (NOT 1). The "trick" here is using the substr() on the left of the equals.#!/usr/bin/perl -w use strict; my $str = 'atcgcgtacatcgatac'; substr($str,8,1)= uc (substr($str,8,1)); #substr($str,-9,1)= uc (substr($str,-9,1)); #coincidence that this is +same print $str; #prints atcgcgtaCatcgatac
substr EXPR,OFFSET,LENGTH
If you need more than one character, adjust the LENGTH. BrowserUk's solution is fine also. I suspect the straightforward substr() solution is faster, because the right-hand side substr() does not modify the string, just returns the character specified and uc() is a very fast critter. If in doubt, benchmark.
In reply to Re: String character replacement based on position
by Marshall
in thread String character replacement based on position
by shu_uemura
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |