平成30/ 2018-10-23 19:49
Perlでの単独shiftとは何か?
http://webcache.googleusercontent.com/search?q=cache:PPmd_lm4zBYJ:d.hatena.ne.jp/chaichanPaPa/20090613/1244870996+perl+shift&cd=2&hl=ja&ct=clnk&gl=jp&source=www.google.co.jp
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