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