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"; } #### 0: January February March April May June July August September October November December 1: February March April May June July August September October November December January 2: March April May June July August September October November December January February 3: April May June July August September October November December January February March 4: May June July August September October November December January February March April 5: June July August September October November December January February March April May 6: July August September October November December January February March April May June 7: August September October November December January February March April May June July 8: September October November December January February March April May June July August 9: October November December January February March April May June July August September 10: November December January February March April May June July August September October 11: December January February March April May June July August September October November