在Perl中解引用会将值从参考点返回到位置。要取消引用的引用,只需使用$,@或%作为引用变量的前缀,具体取决于引用是指向标量,数组还是哈希。以下是解释概念的示例-
#!/usr/bin/perl $var = 10; # Now $r has reference to $var scalar. $r = \$var; # Print value available at the location stored in $r. print "Value of $var is : ", $$r, "\n"; @var = (1, 2, 3); # Now $r has reference to @var array. $r = \@var; # Print values available at the location stored in $r. print "Value of @var is : ", @$r, "\n"; %var = ('key1' => 10, 'key2' => 20); # Now $r has reference to %var hash. $r = \%var; # Print values available at the location stored in $r. print "Value of %var is : ", %$r, "\n";
输出结果
执行以上程序后,将产生以下结果-
Value of 10 is : 10 Value of 1 2 3 is : 123 Value of %var is : key220key110
如果不确定变量类型,则可以很容易地使用ref来了解其类型,如果ref的参数是引用,它将返回以下字符串之一。否则,它返回false-
SCALAR ARRAY HASH CODE GLOB REF
让我们尝试以下示例-
#!/usr/bin/perl $var = 10; $r = \$var; print "Reference type in r : ", ref($r), "\n"; @var = (1, 2, 3); $r = \@var; print "Reference type in r : ", ref($r), "\n"; %var = ('key1' => 10, 'key2' => 20); $r = \%var; print "Reference type in r : ", ref($r), "\n";
输出结果
执行以上程序后,将产生以下结果-
Reference type in r : SCALAR Reference type in r : ARRAY Reference type in r : HASH