![]() |
VOOZH | about |
In Perl, we use variables to access data stored in a memory location(all data and functions are stored in memory). Variables are assigned with data values that are used in various operations. Perl Reference is a way to access the same data but with a different variable. A reference in Perl is a scalar data type that holds the location of another variable. Another variable can be scalar, hashes, arrays, function name, etc. Nested data structure can be created easily as a user can create a list that contains the references to another list that can further contain the references to arrays, scalar or hashes etc.
You can create references for scalar value, hash, array, function etc. In order to create a reference, define a new scalar variable and assign it the name of the variable(whose reference you want to create) by prefixing it with a backslash.
Examples: Making References of different Data Types:
# Array Reference
# defining array
@array = ('1', '2', '3');
# making reference of array variable
$reference_array = \@array;
# Hash Reference
# defining hash
%hash = ('1'=>'a', '2'=>'b', '3'=>'c');
# make reference of the hash variable
$reference_hash = \%hash;
# Scalar Value Reference # defining scalar $scalar_val = 1234; # making reference of scalar variable $reference_scalar = \$scalar_val;
Note:
# creating reference to anonymous hash
$ref_to_anonymous_hash = {'GFG' => '1', 'Geeks' => '2'};# creating reference to an anonymous array $ref_to_anonymous_array = [20, 30, ['G', 'F', 'G']];
# creating reference to an anonymous subroutine
$ref_to_anonymous_subroutine = sub { print "GeeksforGeeks\n"};Now, after we have made the reference, we need to use it to access the value. Dereferencing is the way of accessing the value in the memory pointed by the reference. In order to dereference, we use the prefix $, @, % or & depending on the type of the variable(a reference can point to a array, scalar, or hash etc).
Example 1:
123
Example 2: We can use the below way to dereference the array and get the same output as mentioned above:
123
Example 3:
3c2b1a
Example 4:
1234
We can also deference any particular array element if we want by passing the index of that element.
3