Array References

To solve the problem we will use references. Prefixing the array with a back-slash \ creates a reference to it.

``` my $names_ref = \@names; ```

``` print $names_ref; # ARRAY(0x703dcf2) ```

``` @$names_ref ```

but it will be probably more readable to write

``` @{$names_ref} ```

or even

``` @{ $names_ref } ```

Once we know all this we can pass a reference to a function, within the function we can dereference the array and we get back the original array.

#!/usr/bin/env perl
use strict;
use warnings;

my @names = qw(Foo Bar Baz);

my $names_ref  = \@names;
print "$names_ref\n";         # ARRAY(0x703dcf2)

print "@$names_ref\n";        # Foo Bar Baz
print "@{ $names_ref }\n";    # Foo Bar Baz

print "$names[0]\n";          # Foo
print "$names_ref->[0]\n";    # Foo