📜  珀尔 |参考

📅  最后修改于: 2022-05-13 01:54:21.302000             🧑  作者: Mango

珀尔 |参考

在 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