I think that you are confusing perl with C. I attempted to do similar things when I first started perl programming.

In C, a string is an array of bytes (with a null byte as a terminator), so you can write:

char * packet = "abcdefg"; packet[0] = 'X'; /* packet now contains "Xbcdefg" */

You can't do that in perl, because in a perl scalar variable can contain a string as a single item. It usually makes no sense to treat it as some sort of list type containing characters or bytes.

As other posters have said, if you want to change one character of a string, then you can use substr, but I suspect that is not what you are trying to do.

If you really want an array of characters, then you can declare one explicitly with something like:

@packet = ('a', 'b', 'c'); @packet = qw( a b c ); @packet = split //, "abc";

(All three lines produce the same result)

What is it that you are trying to achieve? I think if you give us more detail, we can help you solve your actual problem rather than natively pointing out what is wrong with what you have done so far.


In reply to Re: Change a String's Element by chrestomanci
in thread Change a String's Element by MathewM

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.