Why are you now using strings in your example, I though the whole point was you wanted to do this on an array (although there is a perf hit, split/join can let you switch back and forth....). String operations are going to be a lot faster here than array operations if you doing this alot with long sequences...
Isn't this just what you want?
my @frame1 = @sequence;
my @frame2 = @sequence;
my @frame3 = @sequence;
shift @frame2;
shift @frame3; shift @frame3;