perlsub - Perlのサブルーチン
http://perldoc.jp/docs/perl/5.22.1/perlsub.pod
Any arguments passed in show up in the array @_. (They may also show
up in lexical variables introduced by a signature; see "Signatures"
below.) Therefore, if you called a function with two arguments, those
would be stored in $_[0] and $_[1]. The array @_ is a local array,
but its elements are aliases for the actual scalar parameters. In
particular, if an element $_[0] is updated, the corresponding
argument is updated (or an error occurs if it is not updatable).
ルーチンに渡されるすべての引数は配列 @_ に置かれます。 (シグネチャに
よって導入されたレキシカル変数にも現れることがあります; 後述する
"Signatures" を参照してください。) したがって、ある関数を二つの引数を
付けて呼び出したならば、 その引数は $_[0] と $_[1] に格納されます。
配列 @_ は local 配列ですが、その要素は実際の スカラパラメータの別名
です。 たとえば $_[0] が更新された場合、対応する引数が更新されます
(更新できない場合にはエラーとなります)。