Remember that the substr() function produces an lvalue, that is, it may be assigned to. Therefore, to change the first character to an S, you could do this:
substr($var,0,1) = 'S';
This assumes that $[ is 0; for a library routine where you can't know $[, you should use this instead:
substr($var,$[,1) = 'S';While it would be slower, you could in this case use a substitute:
$var =~ s/^./S/;But this won't work if the string is empty or its first character is a newline, which ``.'' will never match. So you could use this instead:
$var =~ s/^[^\0]?/S/;
To do things like translation of the first part of a string, use substr, as in:
substr($var, $[, 10) =~ tr/a-z/A-Z/;
If you don't know the length of what to translate, something like this works:
/^(\S+)/ && substr($_,$[,length($1)) =~ tr/a-z/A-Z/;For some things it's convenient to use the /e switch of the substitute operator:
s/^(\S+)/($tmp = $1) =~ tr#a-z#A-Z#, $tmp/e
although in this case, it runs more slowly than does the previous example.
Other resources at this site: