Recipe 4.10. Reversing an Array
Author: Tom Christiansen & Nathan Torkington
Date: 1999-07-02T01:31:56Z

#

| Chapter 4 Arrays |

## 4.10. Reversing an Array

### Problem

You want to reverse an array.

### Solution

Use the `reverse` function:

    # reverse @ARRAY into @REVERSED
    @REVERSED = reverse @ARRAY;

Or use a `for` loop:

    for ($i = $#ARRAY; $i >= 0; $i--) {
        # do something with $ARRAY[$i]
    }

### Discussion

The `reverse` function actually reverses a list; the `for` loop simply processes the list in reverse order. If you don't need a reversed copy of the list, `for` saves memory and time.

If you're using `reverse` to reverse a list that you just sorted, you should have sorted it in the correct order to begin with. For example:

    # two-step: sort then reverse
    @ascending = sort { $a cmp $b } @users;
    @descending = reverse @ascending;

    # one-step: sort with reverse comparison
    @descending = sort { $b cmp $a } @users;

### See Also

The `reverse` function in perlfunc (1) and Chapter 3 of Programming Perl; we use `reverse` in Recipe 1.6

4.9. Appending One Array to Another |  | 4.11. Processing Multiple Elements of an Array