コマンドライン引数の扱い @ARGV



  1. Perl




  2. 特殊変数



  3. here

Perlコマンドライン引数を処理する方法を解説します。

コマンドライン引数とは、プログラムを実行するときに、プログラム名に加えて空白区切りで指定できる引数のことです。

たとえば「test.pl」を実行するときに「1」「3」「5」という値を指定したい場合は、次のようにプログラムを呼び出すことができます。

perl test.pl 1 3 5

上記の例は数字ですがファイル名などの文字列でも大丈夫です。

perl test.pl a.txt b.txt
コマンドライン引数内で空白を使いたい場合

コマンドライン引数の区切りは空白です。空白を使いたい場合は、クォートを使って、エスケープをする必要があります。

perl test.pl foo "bar baz"

コマンドライン引数の受け取り方

コマンドライン引数は@ARGVという特殊変数に代入されています。この特殊変数は、通常の配列と同じように利用することができます。

たとえば、複数の数値がコマンドライン引数として指定された場合は、名前のつけた配列に代入してあげましょう。

my @nums = @ARGV;

リスト代入を使って、コマンドライン引数を受け取ることもできます。

my ($name, $age) = @ARGV;

引数を指定しないshift関数を使って@ARGVの先頭の引数を受け取ることができます。

# @ARGVの先頭の値を取得
my $file = shift;

いずれの場合も、「@ARGV」はそのまま使うのではなく、名前のついた変数に格納して使うようにしましょう。

コマンドライン引数の個数を知りたい場合は@ARGVは通常の変数ですので、スカラコンテキストで評価すると取得することができます。

# コマンドライン引数の個数
my $count = @ARGV;

サブルーチンにおける引数は@_という特殊変数に代入されていました。コマンドライン引数は@ARGVなので、しっかり区別して覚えておきましょう。

コマンドライン引数の「オプション」を処理する

通常のコマンドライン引数に加えて、「オプション」形式のコマンドライン引数を処理したい場合は、Getopt::Longというモジュールを使うのが簡単です。



  1. Perl




  2. 特殊変数



  3. here