$char = substr( $mainstring, $i , 1 );
Это один из способов сделать это, возможно, самый ясный.
Если то, что вы хотели, было числовым значением, и вы намеревались сделать это:
unpack("W*","hello")
Возвращает массив значений Char:
print join ",", unpack("W*","hello") ;
# 104,101,108,108,111
Для правильного Unicode / Utf8 материала вы можете использовать
use utf8;
unpack("U*","hello\0ƀ\n")
# 104,101,108,108,111,0,384,10