in reply to Faster method needed?

I re-wrote it so that it was a little more readable, but I still haven't a clue what it does. What is $self->{S_KEY}? What does it contain? What is $shift? Can you document the function's inputs and what you expect to get out of it? Some sample data might be helpful.
sub Make_shiftedKey ($) { my $self = shift; my $shift = shift; if ($shift % 2) { $self->{S_KEY} = substr($self->{S_KEY}, 1, length($self->{S_KE +Y})); } else { $self->{S_KEY} = substr($self->{S_KEY}, 0, length($self->{S_KE +Y}) - 1); } for (my $i=0; $i <= ($shift - 1) % length $self->{S_KEY}; $i++) { my $key = substr($self->{S_KEY}, 0, 1); $self->{S_KEY} = substr($self->{S_KEY}, 1, length($self->{S_KE +Y}) - 1); $self->{S_KEY} .= $key; } return $self->{S_KEY}; }