Is this what you need? You can use 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
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.

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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.