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
  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。