【问题标题】:Are @{$list_ref} and @$list_ref equivalent in Perl?@{$list_ref} 和 @$list_ref 在 Perl 中是等价的吗?
【发布时间】:2010-12-25 01:23:24
【问题描述】:

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

它们似乎是可以互换的,但我很担心我可能会遗漏一些微妙的事情。

【问题讨论】:

  • 推荐阅读:perldoc perlreftut。将您需要了解的有关引用的几乎所有内容分解成非常简单的部分,以便您可以放心地学习它们:)
  • @hobbs 这是我第二次看到 perlreftut 被提及。我想我最好读一下。 :-)
  • @hobbs +1;还有perllol:perldoc.perl.org/perllol.html
  • 所有 perldoc 教程(当您键入 perldoc perl 时在“教程”部分列出的那些)都是必读的。它们从浅层开始,逐渐变得更加困难,因此它们非常适合以小步骤学习语言而不会让人不知所措。

标签: perl dereference


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    有关详细信息,请参阅documentation on referencesUsing References 部分。标准 Perl 文档还包括几个关于使用引用的教程:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2016-05-29
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多