my @a = qw(1 2 3 4 5); while ((my $a, @a) = @a) { printf "\$a is now '%s', and \@a is now (%s)\n", $a, join(')(',@a); } # Output ... $a is now 1, and @a is now (2)(3)(4)(5) $a is now 2, and @a is now (3)(4)(5) $a is now 3, and @a is now (4)(5) $a is now 4, and @a is now (5) $a is now 5, and @a is now ()