in reply to Letter by letter
Why the sleep after each print? Are you perhaps suffering from buffering?
If not, my initial thought when I think about printing a string letter by letter would be:
$| = 1;
print $_ foreach (split '', $string);
Edit: I took a second look at the code you provided. I'm really not sure I understand what you're trying to do now. The second bit of the for loop is supposed to be a test that tells the loop when to stop, but since you're just assigning to $i, I'm pretty sure that loop will run forever.