我总是使用@_[0]
来获取第一个参数,并使用@_[1]
来获取第二个参数。但是,当我在线搜索代码段时,我发现很多人都喜欢使用shift
关键字。我发现shift
关键字根本不直观。这两者之间是否有任何功能差异?
答案 0 :(得分:14)
是的,两者之间存在差异。
shift
会更改@_
(你可能会认为这将是一个让移动变慢的操作)
$_[0]
或$_[1]
只是转让,根本不会更改@_
。
写作的审美方式是:
sub this_is_better {
my ( $foo, $bar, $hey, $whoa, $doll, $bugs ) = @_;
}
答案 1 :(得分:0)
如documentation中所述,shift
在不使用显式数组的情况下,只需从本地子程序中取@_
的下一个参数,方法是从开头删除参数并将其余元素移到前面。