my @originaltasks=($task1,$task2,$task3); my @newtasks=@originaltasks; while(@fires){ unshift @newtasks,$_; pop @newtasks; ($task1,$task2,$task3)=@newtasks; }