什么是shift-> {o} = $ o;在Perl做什么?

时间:2014-09-21 16:11:25

标签: perl

子程序中的这一行是什么意思?

shift->{o} = $o;

我知道通常会做什么转变,但是在这种情况下,不要用破折号和箭头来理解它。

3 个答案:

答案 0 :(得分:10)

在子/方法中,

shift

的缩写
shift(@_)

子调用将参数放在@_中。方法调用也是这样,但在参数之前使用了调用者。

如果这是在一个名为sub的子组件中,它会将$o分配给第一个参数引用的哈希的元素o

如果这是在作为方法调用的子类中,它会将$o分配给调用者引用的哈希的元素o。实际上,这会设置调用此方法的对象的属性o

在此过程中,shift会从@_中删除引用,但我怀疑这可能没有任何后果。

答案 1 :(得分:3)

解释作为hashref移位的值,并为' o'指定一个值。键入该哈希。

答案 2 :(得分:0)

当您将值传递给子例程时,您可以通过两种方式获得该值。

  1. 你可以使用shift。传递单个值时。

  2. 如果你传递更多价值。你可以通过数组获得它......

  3. shift-> {0}获取将参数传递给子例程的单个值(或)第一个值。

    $ 0用于获取程序的当前路径。