10.6. Dereferencing
The entire scalar or data structure pointed to by the reference can be retrieved by dereferncing. Dereferencing is done by using a $, a @ or a % (depending if the reference refers to a scalar , array or a hash respectively), and then the reference inside curly braces.
Here are some simple examples:
use strict; use warnings; my $ds1 = { 'h' => [5,6,7], 'y' => { 't' => 'u', 'o' => 'p' }, 'hello' => 'up', }; my $array_ref = [5, 6, 7, 10, 24, 90, 14]; my $a = "Hello World!"; my $b = \$a; print "\$array_ref:\n"; print join(", ", @{$array_ref}), "\n"; print "\n\n\$ds1->{'h'}:\n"; print join(", ", @{$ds1->{'h'}}), "\n"; my %hash = %{$ds1->{'y'}}; print "\n\n\%hash:\n"; foreach my $k (keys(%hash)) { print $k, " => ", $hash{$k}; } print "\n\n\$\$b:\n"; print ${$b}, "\n";
If the expression that yields the reference is a simple one than the curly brackets can be omitted (e.g: @$array_ref or $$ref). However, assuming you use curly brackets - the expression surrounded inside them can be as complex as you would like.