A::(tmp:7): our $_ = 1;
DB<9> V :: _
@_ = (
0 0
1 '_'
2 *main::_
3 0
4 '-1'
)
DB<10>
上記はコードの1行目のV :: _
の出力です。@_
は何を意味していますか?@_はPerlのコードの始めに何を意味しますか?
A::(tmp:7): our $_ = 1;
DB<9> V :: _
@_ = (
0 0
1 '_'
2 *main::_
3 0
4 '-1'
)
DB<10>
上記はコードの1行目のV :: _
の出力です。@_
は何を意味していますか?@_はPerlのコードの始めに何を意味しますか?
@_
は、サブルーチンのパラメータを保持する変数です。 デバッガでVを見ると、デバッガ内部のサブルーチンのパラメータの一部が表示されているようです。
http://perldoc.perl.org/perlvar.html#General-Variables
サブルーチン内の配列は@_そのサブルーチンに渡されたパラメータを含んでいます。サブルーチン、@_
@_
は$_
の配列と等価である、配列演算子プッシュ、ポップ、シフト、および本質的にアンシフトuse Data::Dumper; foo(0,'_',*main::_,0,-1); sub foo { print Dumper(\@_); }
のデフォルト配列であるインサイド
出力:
$VAR1 = [
0,
'_',
*::_,
0,
-1
];
l perldocのATESTバージョンでは、あなたがperlvarから必要な部分だけを抽出し-v
スイッチと変数アップを見てみましょう:?
$ perldoc -v '@_'
@ARG
@_ Within a subroutine the array @_ contains the parameters passed
to that subroutine. See perlsub.
これらのパラメータはどういう意味が私には役に立たないようだ –