@{$list_ref} 和 @$list_ref 在 Perl 中是否等效?

发布于 2024-08-14 03:28:59 字数 123 浏览 2 评论 0 原文

我是 Perl 新手,很好奇 @{$list_ref}@$list_ref 是否完全等效。

它们似乎是可以互换的,但我很紧张,因为我可能会错过一些微妙的事情。

I am new to Perl and am curious whether @{$list_ref} and @$list_ref are perfectly equivalent.

They seem to be interchangeable, but I am nervous that there is something subtle going on that I may be missing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无声无音无过去 2024-08-21 03:28:59

是的,它们是等价的。当表达式不仅仅是一个简单的标量变量时,您需要大括号,例如

push @{ $foo{$bar} } => "baz";

有关更多详细信息,请参阅引用文档使用引用部分>。标准 Perl 文档还包括一些有关使用引用的教程:

Yes, they're equivalent. You need braces when the expression is more than a simple scalar variable, e.g.,

push @{ $foo{$bar} } => "baz";

For more detail, see the Using References section of the documentation on references. The standard Perl documentation also includes several tutorials on using references:

羁〃客ぐ 2024-08-21 03:28:59

我总是发现记住外大括号不是语法魔法,它们只是一个返回引用的块,这很有帮助。块内的表达式可以是返回引用的任何内容:

$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange

I've always found it helpful to remember that the outer braces are not syntactical magic, they're just a block that returns a reference. The expression inside the block can be anything that returns a reference:

$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文