in reply to cut of first char of a string

Well, if you don't count $_ as an extra variable because it's already implicitly there, you can do it like this:
use bytes; if (vec($s,3,2) < 3) { vec($s,$_,8) = vec($s,$_+1,8) for 0..length($s)-2; chop($s); } else { vec($s,$_,8) = vec($s,$_+1,8) for 0..length($s)-2; chop($s); while (vec($s,3,2) == 2) { vec($s,$_,8) = vec($s,$_+1,8) for 0..length($s)-2; chop($s); } }
Update:
Hmm, here's a solution without $_:
use bytes; if (vec($s,3,2) < 3) { () = $s =~ m/.(?=.)(?{ vec($s,pos($s)-1,8) = vec($s,pos($s),8) +})/sg; chop($s); } else { () = $s =~ m/.(?=.)(?{ vec($s,pos($s)-1,8) = vec($s,pos($s),8) +})/sg; chop($s); while (vec($s,3,2) == 2) { () = $s =~ m/.(?=.)(?{ vec($s,pos($s)-1,8) = vec($s,pos($s +),8)})/sg; chop($s); } }