Perl中的引用和解引用

对$scalar的引用:

my $variable;
my $reference=\$variable;

对$scalar的解引用:

$$reference;


对@array的引用:

my @array;
my $reference=\@array;

对@array的解引用:

$$reference[element];
$reference->[element];
@$reference; #to access the whole array


对%hash的引用

my %hash;
my $reference=\%hash;

对%hash的解引用:

$$reference{'key'};
$reference->{'key'};
%$reference; #to access the whole hash


对函数的解引用:

&$function(arguments);
$function->(arguments);

对函数的引用:

sub function{}
my $function=\&function;



匿名数组:

my $array;
@$array=("a","b");
$$array[3]="c";
$array->[4]="d";
print @$array;


匿名函数:

my $reference=sub {};
&$reference(parameters);

or

sub function{}

${\function(parameters)};


ref函数返回相应的引用类型:

ref(\@array)=ARRAY;
ref(\%hash)=HASH;
ref(\&function)=CODE;
ref(\\@array)=REF;
ref(\*hash)=GLOB;


数组的数组:

$array[$i]->[$j];
$arrat[$i][$j]


引用不能作为hash中的键字。


${a}=$a;
${"a"}=$a; #是一个符号引用

如果不使用符号引用: use strict 'refs';使用:"no strict 'refs'";

$name="bam";

$$name=1; #$bam=1

$name->[0]=4; # @bam,$bam[0]=4

$name->{X}="Y";

@$name=(); # clear @bam

&$name; #call &bam

原文地址:https://www.cnblogs.com/zhangxz/p/2841738.html