如何在Perl中定义匿名标量引用?

tjw*_*992 1 perl scalar reference

如何在Perl中正确定义匿名标量引用?

my $scalar_ref = ?;

my $array_ref = [];

my $hash_ref = {};

Leo*_*erd 8

如果你想引用一些可变存储,那么就没有特别简洁的直接语法.关于你可以管理的最好的是

my $var;
my $sref = \$var;
Run Code Online (Sandbox Code Playgroud)

或整洁

my $sref = \my $var;
Run Code Online (Sandbox Code Playgroud)

或者,如果您不希望变量本身在范围内,则可以使用do块:

my $sref = do { \my $tmp };
Run Code Online (Sandbox Code Playgroud)

此时,您可以通过$sref值传递,并且其他人可以看到它引用的标量的任何突变.

这种技术当然也适用于数组或散列引用,只是因为有更简洁的语法用于[]{}:

my $aref = do { \my @tmp };  ## same as  my $aref = [];

my $href = do { \my %tmp };  ## same as  my $href = {};
Run Code Online (Sandbox Code Playgroud)