子程序中的这一行是什么意思?
shift->{o} = $o;
我知道通常会做什么转变,但是在这种情况下,不要用破折号和箭头来理解它。
答案 0 :(得分:10)
在子/方法中,
shift
是
的缩写shift(@_)
子调用将参数放在@_
中。方法调用也是这样,但在参数之前使用了调用者。
如果这是在一个名为sub的子组件中,它会将$o
分配给第一个参数引用的哈希的元素o
。
如果这是在作为方法调用的子类中,它会将$o
分配给调用者引用的哈希的元素o
。实际上,这会设置调用此方法的对象的属性o
。
在此过程中,shift
会从@_
中删除引用,但我怀疑这可能没有任何后果。
答案 1 :(得分:3)
解释作为hashref移位的值,并为' o'指定一个值。键入该哈希。
答案 2 :(得分:0)
当您将值传递给子例程时,您可以通过两种方式获得该值。
你可以使用shift。传递单个值时。
如果你传递更多价值。你可以通过数组获得它......
shift-> {0}获取将参数传递给子例程的单个值(或)第一个值。
$ 0用于获取程序的当前路径。