Perlでの単独shiftとは何か?
Perlでのshift関数は、普通、配列変数を引数にとり、配列変数から一番若いインデクスの要素を取り出します。
しかし、配列変数の引数がない単独shiftを結構見かけます。
これは、mainモジュールでは「@ARGV」がデフォルトの引数で、sub内では、「@_」がデフォルトの引数になるのです。
ちなみに、「@ARGV」は、コマンドラインの引数の配列で、「@_」は、サブルーチンの引数の配列です。
◆サンプル
use strict; use warnings; my $arg = shift || 2000; print $arg, "\n"; subx(); subx(4000); sub subx { my $para = shift || 3000; print $para, "\n"; }
◆サンプル実行結果
C:\perltest>perl shift.pl 1000 1000 3000 4000 C:\perltest>perl shift.pl 2000 3000 4000