燈明ブログ

現状は小池啓仁の応援ブログ

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