【问题标题】:What does the `->` syntax mean in Perl?Perl 中的 `->` 语法是什么意思?
【发布时间】:2011-11-18 08:39:12
【问题描述】:
chdir($g_var->{g_loc});

我在我正在使用的一些 perl 代码中发现了这一行,但我无法弄清楚 -> 的含义。我的意思是我找不到语法的含义。顺便说一句,g_loc 是文件夹的名称。我在这里错过了什么?

附:我只有 4 天进入 perl。

【问题讨论】:

标签: perl


【解决方案1】:

-> 正在取消引用一个引用。 $g_var 包含对 %hash 的引用(您可以使用 $hash{key} 访问其中的元素)。

您可以在perlreftutperlref 文档中找到有关参考的更多信息。还有 perllol 关于列表列表(嵌套引用)。

您可以使用perldoc perlreftut等打开文档。

【讨论】:

    【解决方案2】:

    这就是您在http://perldoc.perl.org 上搜索perlop (perl operators) 时得到的结果。 Perldoc,它的 on-version 经历了重大改进,坦率地说,从所有参考文档中我最喜欢这个。

    "->" 是一个中缀解引用运算符,就像在 C 和 C++ 中一样。如果右侧是 [...]{...}(...) 下标,则左侧必须分别是对数组、散列或子例程的硬引用或符号引用。 (或者从技术上讲,一个能够保存硬引用的位置,如果它是用于分配的数组或哈希引用。)参见perlreftutperlref

    否则,右侧是方法名称或包含方法名称或子例程引用的简单标量变量,左侧必须是对象(祝福引用)或类名(即包裹名字)。见perlobj

    【讨论】:

      【解决方案3】:

      $g_var 是对哈希的引用。 指针只是查找语法,定位“g_loc”哈希条目。

      如果%g_var 是哈希而不是哈希引用,则与$g_var{g_loc} 相同。

      【讨论】:

      • 除了 $g_var 不能是散列,那就是 %g_var。
      • 哎呀,是的。现在解释%g_var$g_var{g_loc} 之间的关系,考虑到不同的印记:(
      • %g_var 引用所有值,$g_var{g_loc} 引用一个值,@g_var{'a', 'b'} 引用两个值。全部来自同一个哈希。 Sigils 指的是你引用了多少东西,而不是变量的类型。
      猜你喜欢
      • 1970-01-01
      • 2015-12-16
      • 2018-03-05
      • 2013-11-02
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多