Slices are fun:
use strict;
use warnings;
my @month_name = qw(
January February March April May June July August September
October November December
);
for my $startMonthIdx (0 .. 11) {
my @sel = @month_name[$startMonthIdx .. 11, 0 .. $startMonthIdx -
+1];
print "$startMonthIdx: @sel\n";
}
Prints:
0: January February March April May June July August September October
+ November December
1: February March April May June July August September October Novembe
+r December January
2: March April May June July August September October November Decembe
+r January February
3: April May June July August September October November December Janu
+ary February March
4: May June July August September October November December January Fe
+bruary March April
5: June July August September October November December January Februa
+ry March April May
6: July August September October November December January February Ma
+rch April May June
7: August September October November December January February March A
+pril May June July
8: September October November December January February March April Ma
+y June July August
9: October November December January February March April May June Jul
+y August September
10: November December January February March April May June July Augus
+t September October
11: December January February March April May June July August Septemb
+er October November
Premature optimization is the root of all job security