とほほのperl入門(環境変数)

トップ > とほほのperl入門 > 環境変数

ディレクトリ

HOME

ホームディレクトリを示します。chdir() を引数無しで実行すると HOME に移動します。

$ export HOME=/home/yamada
LOGDIR

chdir() が引数無しで実行され、HOME が設定されていない場合に LOGDIR に移動します。

$ export LOGDIR=/home/yamada
PERL5LIB

ライブラリやモジュールを探す対象のディレクトリを指定します。複数指定する場合は、UNIX系ではコロン(:)、Windows系ではセミコロン(;) で区切ります。setuid、setgid モードや -t-T オプション付きで実行されている場合は参照されません。

$ export PERL5LIB=/opt/myapp/lib:/opt/myapp/mod
PERLLIB

PERL5LIB が指定されていない場合、代わりに PERLLIB が参照されます。

$ export PERLLIB=/opt/myapp/lib:/opt/myapp/mod
PERL_USE_UNSAFE_INC

perl が @INC にカレントディレクトリを含まないように設定されている場合でも、PERL_USE_UNSAFE_INC に 1 を設定すると、@INC にカレントディレクトリを含めることを許容します。

$ export PERL_USE_UNSAFE_INC=1

オプション

PERL5OPT

デフォルトのオプションを指定します。-CDIMTUWdmtw のいずれかを指定できます。

$ export PERL5OPT=-w

エンコーディング

PERL_ENCODING

use encoding プラグマでエンコーディング名を省略した場合のデフォルトのエンコーディング名を指定します。ただし use encoding プラグマは Perl 5.26 で廃止されています。

$ export PERL_ENCODING=utf-8
PERL_UNICODE

-C オプションと同じ意味を持ちます。

$ export PERL_UNICODE=S perl test.pl

デバッグ

PERL5DB

perl を -d オプション付きで実行した場合のデバッガ読込コマンドを指定します。デフォルトは下記が実行されます。

BEGIN { require "perl5db.pl" }
$ export PERL5DB='BEGIN { require "perl5db.pl" }
PERL5DB_THREADED

真の値を設定するとデバッグ対象のコードがスレッドを使用していることを示します。

$ export PERL5DB_THREADED=1
PERL_DEBUG_MSTATS

1 を設定するとプログラム実行後にメモリ使用状況を表示します。perl が perl 版の malloc() を使用している場合、つまり perl -V:d_mymalloc が define となっている場合に利用可能です。

$ export PERL_DEBUG_MSTATS=1
PERL_MEM_LOG

perl が PERL_MEM_LOG オプション付きでコンパイルされている場合、メモリや SV に関する情報を出力します。PERL_MEM_LOG には number[m][s][t] を指定します。number はファイル記述子番号(1:STDOUT、2:STDERR)、m はメモリ、s は SV、t はタイムスタンプを示します。

$ export PERL_MEM_LOG=2mst
PERL_DL_NONLAZY

1 を設定すると、プログラム実行の前にすべてのライブラリを読み込みます。該当箇所のテストが呼び出されなくても関数名スペルミスなどを見つけることができるようになります。

$ export PERL_DL_NONLAZY=1

Perl I/O

PERLIO

ファイルなどの入出力に使用する PerlIO 層を指定します。複数指定する場合はコロン(:)で区切ります。指定しない場合は、UNIX系では :unix:perlio、Windows系では :unix:crlf となります。

$ export PERLIO=:unix:perlio
$ perl -e 'print "ABC\n"' | od -tx1z
0000000 41 42 43 0a                         # 改行コードは LF
$ export PERLIO=:unix:crlf
$ perl -e 'print "ABC\n"' | od -tx1z
0000000 41 42 43 0d 0a                      # 改行コードは CR LF

PerlIO には下記などがあります。

PERLIO_DEBUG

perl を -Di オプション付きで実行した場合、PerlIO のデバッグログを stderr ではなく指定されたファイルに書き出します。perl が DEBUGGING モードでコンパイルされている場合に有効です。

$ export PERLIO_DEBUG=/tmp/perlio.log

ランダム値やハッシュキーのランダム性

PERL_INTERNAL_RAND_SEED

ランダム値のシード(種)を非負整数で指定します。

export PERL_INTERNAL_RAND_SEED=123
PERL_RAND_SEED

乱数を生成する際、srand() が無かったり srand() が引数無しで呼ばれた際のシード(種)を指定します。

$ export PERL_RAND_SEED=1234567
PERL_HASH_SEED

Perl は通常ハッシュの順序をランダムに決めるためのシード(種)値を起動時にランダムに決めますが、PERL_HASH_SEED でシードを指定することができます。Perl 5.8.1 で導入され、5.18.0 で16進数を指定できるようになりました。

$ PERL_PERTURB_KEYS=2 PERL_HASH_SEED=0x1234 perl test.pl
PERL_PERTURB_KEYS

0 または NO を指定するとハッシュキーの探索順序は毎回同じになります。1 または RANDOM を指定するとキーの探索順序がランダム化されます。2 または DETERMINISTIC を指定するとハッシュへのキーの挿入によって変わりますが探索順序は毎回同じになります。

$ PERL_PERTURB_KEYS=2 PERL_HASH_SEED=0x1234 perl test.pl
PERL_HASH_SEED_DEBUG

1 を設定すると起動時にハッシュ関数、シード(種)、キー探索アルゴリズム(NO/RANDOM/DETERMINISTIC)を STDERR に出力します。

$ PERL_HASH_SEED_DEBUG=1 perl test.pl

その他

PERL5SHELL

Windows 環境で system() や `...` を実行する際に使用されるシェルを指定します。Windows 95/Me までは "command.com /c"、Windows XP 以降では cmd.exe が使用されます。

C:\>set PERL5SHELL=cmd.exe
PERL_ALLOW_NON_IFS_LSP

1 を指定すると IFS(Installable File System)非互換の LSP(Layered Service Providers) を使用できるようにします。Windows ではソケットを通常のファイルハンドルとしてエミュレートするために IFS 互換の LSP を使用しますが、一部のファイアウォールソフトなどでは非互換の LSP を使用する必要があります。

C:\>set PERL_ALLOW_NON_IFS_LSP=1
PERL_DESTRUCT_LEVEL

オブジェクトやリファレンスのデストラクタの振る舞いを制御します。

$ export PERL_DESTRUCT_LEVEL=2
PERL_SIGNALS

Perl 5.8.1 で追加されました。unsafe を設定すると遅延しないけど安全ではないシグナル処理となります。safe を設定すると安全だけどすこし遅延するつシグナル処理となります。

$ export PERL_SIGNALS=safe
PERL_ROOT

Perl と VMS 専用の @INC のための論理デバイスを含む、 変換が隠されたルートとなる論理名を指定します。


Copyright (C) 2023 杜甫々
初版:2023年10月1日、最終更新:2023年10月1日
http://www.tohoho-web.com/perl/environments.html