C lies to you. What you think of as a string in C is actually an array of int1's (eight bit integers).
C's "char" is actually "int1", so when you subscript a C "string" you get an integer.
Think of perl's string as an opaque type. That's why perl has an ord() function and a chr() function,
to convert back and forth between string and integer.
If you want to handle your information like you would in C,
convert it to an array of ints, which you can then subscript just like you do in C.
Here are several ways:
my @intarray = unpack 'c*', "perl string";
my @intarray = map ord, split //, "perl string";
Also, if you want to pick the i'th integer value from a perl string, there is
my $integer = vec "perl string", $i, 8;
Hope this helps.
Furthermore, when you were doing (simplified example)
$something = substr("a string", 4, 1) & 2**3;
you were really doing
$something = atoi("r") & 2**3;
because if one argument to "&" is a number and the other is a string, it converts the other to a number (with an equivalent to C's atoi function).
|