Perlプログラムを設定する際に、ユーザにプログラム自体を開かせ変数を修正させるようなことはしてはならない。
設定セクションを別ファイルに切り出す
設定セクションを別ファイルに置き、メインプログラムに引き込む。
設定セクションのコードは、別ファイルにスコープを持つことになるため、レキシカル変数は使えない。
### config.pl # レキシカル変数は使えない
#!/usr/bin/perl use strict; use warnings; BEGIN { requier "config.pl"; }
環境変数
シェルに設定されている環境変数をPerlプログラムで使用する。
Perlで環境変数を使用するには、%ENVハッシュを利用する。
$ENV{REQUEST_METHOD};
$ DEBUG=1 ./program.pl
コマンドラインスイッチ
プログラム実行時に引数を指定し、プログラムの動作に影響を与える。
- -sスイッチ
- 引数にシングルハイフン(-)、ダブルハイフン(--)を指定しても使える。
- 値はあってもなくてもよい。
$ perl -s ./program.pl -a=1 -b=2 ### $a, $bとして、値を参照できる ### 値を指定しない場合は、"1"が設定される
- Getopt::Std : 値の指定が可能な、単一文字のスイッチを扱う
- getopt : 個々のスイッチが値を持っていることを期待している。引数を設定しない場合には、値を設定しない。
#!/usr/bin/perl use strict; use warnings; use Getopt::Std; getopt('dog', \ my %opts); # 引数"-d", "-o", "-g"の値を%optsハッシュに格納する print "$opts{d}\n"; print "$opts{o}\n"; print "$opts{n}\n"; # "perl ./program.pl -d 1"のように実行する
-
- getopts : 引数を設定しない場合は、値に1を設定する。コードはgetoptと同じように書く。
- Getopt::Long : 単一文字のスイッチ、単一文字のスイッチのバンドル、ダブルハイフンのスイッチを扱う
- GetOptins関数にキー/値ペアのリストを提供する。キーはスイッチ名、値はGetOptionsが値を置く変数のリファレンスを示す
#!/usr/bin/perl use strict; use warnings; use Getopt::Long; my $opts = GetOptions( 'debug|d' => \ my $debug, 'verbose|v' => \ my $verbose, ); # "|"を使って、スイッチのエイリアスを作成できる