Built-In Array Functions

Contents | Up | Prev | Next

# 9.4. Built-In Array Functions

## push

The `push` function appends an element or an entire array to the end of an array variable. The syntax is `push @array_to_append_to, @array_to_append` or `push @array, $elem1`. For example, the primes program from earlier could be written as:

    # Put 2 as the first prime so we won't have an empty array,
    # what might confuse the interpreter
    @primes = (2);

    MAIN_LOOP:
    for $number_to_check (3 .. 200)
    {
        foreach $p (@primes)
        {
            if ($number_to_check % $p == 0)
            {
                next MAIN_LOOP;
            }
        }

        # If we reached this point it means $number_to_check is not
        # divisable by any prime number that came before it.
        push @primes, $number_to_check;
    }

    foreach $p (@primes)
    {
        print $p, ", ";
    }
    print "\n";

Notice that `push` is equivalent to typing `@array = (@array, $extra_elem)`, but it is recommended to use it, because it minimizes error and it executes faster.

## pop

`pop` extracts the last element from an array and returns it. Here's a short example to demonstrate it:

    # This program prints the numbers from 10 down to 1.
    @numbers = (1 .. 10);
    while(scalar(@numbers) > 0)
    {
        $i = pop(@numbers);
        print $i, "\n";
    }

## shift

`shift` extracts the first element of an array and returns it. The array will be changed to contain only the elements that were present there previously, with the 1 to `scalar(@array)-1` indexes.

Here's the above example, while using `shift` instead of `pop`:

    # This program prints the numbers 1 to 10.
    @numbers = (1 .. 10);
    while(scalar(@numbers) > 0)
    {
        $i = shift(@numbers);
        print $i, "\n";
    }

## join

The syntax is `join($separator, @array)` and what it does is concatenates the elements of `@array` while putting `$seperator` in between. Here's an example:

    @myarray = ("One fish", "Two fish", "Red Fish", "Blue Fish");

    print join("\n", @myarray), "\n";

## reverse

The `reverse` function returns the array which contains the elements of the array passed to it as argument in reverse. Here's an example:

    print "Enter some lines:\n";

    $line = <>;
    chomp($line);
    while ($line)
    {
        push @mylines, $line;
        $line = <>;
        chomp($line);
    }

    print "Your lines in reverse are:\n", join("\n", reverse(@mylines)), "\n";

Note that by typing `scalar(reverse($scalar))` you get the string that contains the characters of `$scalar` in reverse. `scalar(reverse(@array))` concatenates the array into one string and then reverses its characters.

Contents | Up | Prev | Next