Contents | Up | Prev | Next |

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 # divisible 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 minimises error and it executes faster.

`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`

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"; }

The syntax is `join($separator, @array)`

and what it does is concatenates the elements of `@array`

while putting `$separator`

in between. Here's an example:

@myarray = ("One fish", "Two fish", "Red Fish", "Blue Fish"); print join("\n", @myarray), "\n";

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 |

Written by Shlomi Fish