Unfortunally, I left out a '-1'. Here's the right version:

#!/usr/bin/perl -w

use strict;
use warnings 'all';


sub rotate {
    return () unless   $_ [1];
    die "Not an array ref" unless "ARRAY" eq ref $_ [1];
    return [] unless @{$_ [1]};
    my $l = $_ [0] % @{$_ [1]};
    [@{$_ [1]} [$l .. $#{$_ [1]}, 0 .. $l - 1]]
}
  
my $array = ['A' .. 'E'];

for my $r (-15 .. 15) {
    printf "Rotate %3d: @{rotate $r, $array}\n", $r;
}
__END__
Rotate -15: A B C D E
Rotate -14: B C D E A
Rotate -13: C D E A B
Rotate -12: D E A B C
Rotate -11: E A B C D
Rotate -10: A B C D E
Rotate  -9: B C D E A
Rotate  -8: C D E A B
Rotate  -7: D E A B C
Rotate  -6: E A B C D
Rotate  -5: A B C D E 
Rotate  -4: B C D E A
Rotate  -3: C D E A B
Rotate  -2: D E A B C
Rotate  -1: E A B C D
Rotate   0: A B C D E
Rotate   1: B C D E A
Rotate   2: C D E A B
Rotate   3: D E A B C
Rotate   4: E A B C D
Rotate   5: A B C D E
Rotate   6: B C D E A
Rotate   7: C D E A B
Rotate   8: D E A B C
Rotate   9: E A B C D
Rotate  10: A B C D E
Rotate  11: B C D E A
Rotate  12: C D E A B
Rotate  13: D E A B C  
Rotate  14: E A B C D
Rotate  15: A B C D E


Abigail

Reply via email to