Хм... В руби, в отличие от перла, не надо подглядывать в Cookbook, чтобы объединить массивы или пересечь их - для этого уже есть готовые операции. Названия некоторых методов работы с массивами совпадают с аналогичными функциями из перла. И это хорошо.
Вообще-то, это очевидное решение. Но чтобы не думать одну мысль дважды - пусть будет тут: #!/usr/bin/perl -w
use strict;
$\ = "\n";
my @ar = qw(a b c d);
# Rotate left: abcd → bcda
# ┌─ list ←┐
# └────────┘
push @ar, shift @ar;
print @ar;
# Rotate right: abcd → dabc
# ┌→ list ─┐
# └────────┘
unshift @ar, pop @ar;
print @ar;