当前位置:  开发笔记 > 编程语言 > 正文

%$ var是否取消引用Perl哈希?

如何解决《%$var是否取消引用Perl哈希?》经验,为你挑选了2个好方法。

我正在向子程序发送一个哈希,并用它来获取它 my($arg_ref) = @_;

但到底是%$arg_ref什么?是否%$取消引用哈希?



1> Jon Ericson..:

$arg_ref是一个标量,因为它使用了$sigil.据推测,它拥有哈希引用.所以是的,%$arg_ref哈希引用的deferences.写它的另一种方法是%{$arg_ref}.这使得代码的意图更加清晰,尽管更加冗长.

引用来自perldata(1):

 Scalar values are always named with '$', even when referring
 to a scalar that is part of an array or a hash.  The '$'
 symbol works semantically like the English word "the" in
 that it indicates a single value is expected.

     $days               # the simple scalar value "days"
     $days[28]           # the 29th element of array @days
     $days{'Feb'}        # the 'Feb' value from hash %days
     $#days              # the last index of array @days

所以你的例子是:

     %$arg_ref           # hash dereferenced from the value "arg_ref"

my($arg_ref) = @_;抓取函数参数堆栈中的第一项,并将其放在一个名为的局部变量中$arg_ref.调用者负责传递哈希引用.一种更规范的写作方式是:

my $arg_ref = shift;

要创建哈希引用,您可以从哈希开始:

some_sub(\%hash);

或者您可以使用匿名哈希引用创建它:

some_sub({pi => 3.14, C => 4}); # Pi is a gross approximation.



2> Paul Tomblin..:

您可以使用以下内容获取单个项目,而不是像这样取消引用整个哈希

$arg_ref->{key}

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有