私は perl の設定が初めてで、いくつかの一般的な変数を設定する最良の方法を見つけようとしています。これを行うには多くの方法があることは知っていますが、「最善」を見つけたいです;)。ルートディレクトリにある .perl_env ファイルを見つけましたが、ドキュメントがあまり見つかりません。これは、BINDIR や VARDIR などの変数 (perl スクリプトで使用する場所) を保持できる場所ですか、それとももっと良い方法がありますか。ありがとう!!
4 に答える
他のみんなと同じように、私は.perl_env
ファイルについて聞いたことがありません。また、システム グローバル変数 (環境変数) を設定する場合は、Bash スクリプトで設定する必要があるため、Perl グローバル変数を設定することを意味していると想定しています。
とにかく、あなたが本当にこれをやりたいのなら、私は という名前のファイルを作成し、MyGlobalVariables.pm
それをあなたの PERL5LIB ディレクトリに置きます。
package MyGlobalVariables;
use strict;
use warnings;
use parent 'Exporter';
our @EXPORT = qw/$SomeVar/;
our $SomeVar = 'Some Value';
各変数を@EXPORT
配列に追加する必要があることに注意してください。
次に、スクリプトで書くことができuse MyGlobalVariables;
、ほら、そこにあります。このメカニズムは、LaTeX のカスタム スタイル ファイルによく似ています。もちろんマクロ言語です。
とはいえ、これは良い考えだとは本当に思いません。なんで?2 つの理由:
- これらの変数の初期化は表示されないため、他のファイルを確認する必要があります。
- これらの変数は、レキシカルではなく真のグローバルでなければなりません。本当の理由がない限り、常に (
my
ではなく) レキシカルを使用する必要があります。our
うーん、私は聞いたことが.perl_env
なく、ドキュメントにもありません:
$ perldoc perlrun | grep .perl_env || echo "not found"
not found
しかし、とにかく試してみましょう。
$ echo '$ENV{FOO}="BAR";' >~/.perl_env
$ FOO=BAZ perl -E'say $ENV{FOO}'
BAZ
いいえ、うまくいきません。
構成ファイルを処理してスクリプト間で変数を共有する場合は、次の例を参照してください。
入力ファイル:
$ cat /tmp/config
[name1]
val1=foobar
val2=qux
[name2]
val1=10
val2=100
Perl コード:
$ perl -we '
use Data::Dumper;
use Config::IniFiles;
my $ini = new Config::IniFiles(
-file => "/tmp/config", -allowcontinue => 1
);
print Dumper $ini->{"myparms"};
'
出力:
$VAR1 = {
'name2' => [
'val1',
'val2'
],
'name1' => [
'val1',
'val2'
]
};
shell
代わりに、共有する変数が必要な場合、たとえば次を使用する場合bash
:
$ echo "export MYVAR=foobar" >> ~/.bashrc
$ . !$
$ perl -le 'use Env qw/MYVAR/; print $MYVAR;'
そのようなグローバル変数については、環境に設定しています (私は Windows を使用していますが、明らかに Unix でも同じことができます)。Perl では、環境は%ENV
変数 (システムの一部) に格納されます。BINDIR は$ENV{BINDIR}
.