珀尔 |参考
在 Perl 中,我们使用变量来访问存储在内存位置中的数据(所有数据和函数都存储在内存中)。变量分配有用于各种操作的数据值。 Perl Reference是一种访问相同数据但使用不同变量的方法。 Perl 中的引用是一种标量数据类型,它保存另一个变量的位置。另一个变量可以是标量、散列、数组、函数名等。嵌套数据结构可以很容易地创建,因为用户可以创建一个包含对另一个列表的引用的列表,该列表可以进一步包含对数组、标量或散列等的引用。
参考创建
您可以为标量值、哈希、数组、函数等创建引用。为了创建引用,请定义一个新的标量变量,并通过在其前面加上反斜杠为其分配变量的名称(您要创建其引用)。
示例:引用不同的数据类型:
# 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;
笔记:
- 可以使用围绕键和值对的花括号 {}创建对匿名哈希的引用。
例子:
# 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']];
- 也可以在sub的帮助下创建对匿名子例程的引用。这里将没有sub的名称。
例子:
# creating reference to an anonymous subroutine $ref_to_anonymous_subroutine = sub { print "GeeksforGeeks\n"};
- 无法创建对输入/输出句柄(即 dirhandle 和文件句柄)的引用。
取消引用
现在,在我们完成引用之后,我们需要使用它来访问该值。解引用是访问引用指向的内存中的值的方式。为了取消引用,我们根据变量的类型使用前缀$、@、% 或 & (引用可以指向数组、标量或哈希等)。
示例 1:
# Perl program to illustrate the
# Dereferencing of an Array
# defining an array
@array = ('1', '2', '3');
# making an reference to an array variable
$reference_array = \@array;
# Dereferencing
# printing the value stored
# at $reference_array by prefixing
# @ as it is a array reference
print @$reference_array;
输出:
123
示例 2:
# Perl program to illustrate the
# Dereferencing of a Hash
# defining hash
%hash = ('1'=>'a', '2'=>'b', '3'=>'c');
# creating an reference to hash variable
$reference_hash = \%hash;
# Dereferencing
# printing the value stored
# at $reference_hash by prefixing
# % as it is a hash reference
print %$reference_hash;
输出:
3c2b1a
示例 3:
# Perl program to illustrate the
# Dereferencing of a Scalar
# defining a scalar
$scalar = 1234;
# creating an reference to scalar variable
$reference_scalar = \$scalar;
# Dereferencing
# printing the value stored
# at $reference_scalar by prefixing
# $ as it is a Scalar reference
print $$reference_scalar;
输出:
1234