Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. モジュール
  3. here

Getopt::Long - コマンドラインオプションを処理する

Getopt::Longを使用するとコマンドライン引数のオプションを処理することができます。

# モジュールの読み込みと関数のインポート
use Getopt::Long 'GetOptions';

コマンドライン引数で次のようなオプションを指定する場合を考えてみましょう。

# コマンドライン引数でオプションを指定。
perl script.pl --enable_cache --max_clients=5 --type=single config.init

GetOptions関数を使用すればこのようなコマンドラインオプションを簡単に処理することができます。

# GetOptionsによるコマンドライン引数のオプションの処理

# デフォルト値の設定
my $enable_cache;
my $max_clients = 5;
my $type = 'prefork';

# オプションの処理
GetOptions(
  'enable_cache'  => \$enable_cache,
  'max_clients=i' => \$max_clients,
  'type=s'        => \$type
);

# オプション以外の引数を受け取る 
my $conf_file = shift;

GetOptions関数の使い方です。

# GetOptionsの引数
GetOptions(
  'オプション名=値の種類' => '保存するための変数',
  'オプション名=値の種類' => '保存するための変数',
  ...
);

「オプション名=種類」にはオプション名と値の種類を指定します。オプション名が真偽値である場合は値の種類は省略します。オプション名が整数のときは値の種類にiを指定します。オプション名が文字列の場合は値の種類にsを指定します。

# 真偽値
'enable_cache'  => \$enable_cache

# 整数
'max_clients=i' => \$max_clients

# 文字列
'type=s'        => \$type

「保存するための変数」にはスカラ変数のリファレンスを指定します。デフォルト値の設定を最初に行っておき、GetOptionsの引数にリファレンスで渡します。

# デフォルト値の設定
my $max_clients = 5;

# 引数にスカラ変数のリファレンスを指定
GetOptions(
  'max_clients=i' => \$max_clients,
);

コマンドラインオプションは短縮名で指定することも可能です。オプション名の頭文字が短縮名になります。

# 短縮名でコマンドライン引数のオプションを指定
perl script.pl -e -m=5 -t=single config.init

=は省略することもできます。

# イコールを省略
perl script.pl --enable_cache --max_clients 5 --type single config.init