The above note by
Errto explained why
\@data works. As s?he said, it creates a reference to the array
@data, and stores it in the scalar.
Since you said you're confused by how both methods work, let me clear up
eric256's method.
$array_ref = [ ]; creates a new, empty array, and returns the reference to it. In this case, we assign it to $array_ref.
$array2_ref = [1, 2, 3, 4]; creates a new array and initializes it with the values supplied. It returns the reference, which we once again store.
$radius_ref = [@data] will create a new array initialized with the contents of
@data.
There's a really important distinction between using
[@data] and
\@data. They both create array references, but the method with the brackets creates a new array, while the slash method references your existing array. The example below should clear up any confusion you have.
my @data = (1,2,3,4);
my $existing_ref = \@data;
my $new_ref = [@data];
$existing_ref->[0] = "a";
$new_ref->[2] = "c";
Now, @data contains
(a,2,3,4)
and $new_ref points to an array the contains
(1,2,c,4)
Hope that helped.