0

私は perl の設定が初めてで、いくつかの一般的な変数を設定する最良の方法を見つけようとしています。これを行うには多くの方法があることは知っていますが、「最善」を見つけたいです;)。ルートディレクトリにある .perl_env ファイルを見つけましたが、ドキュメントがあまり見つかりません。これは、BINDIR や VARDIR などの変数 (perl スクリプトで使用する場所) を保持できる場所ですか、それとももっと良い方法がありますか。ありがとう!!

4

4 に答える 4

2

他のみんなと同じように、私は.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 つの理由:

  1. これらの変数の初期化は表示されないため、他のファイルを確認する必要があります。
  2. これらの変数は、レキシカルではなく真のグローバルでなければなりません。本当の理由がない限り、常に (myではなく) レキシカルを使用する必要があります。our
于 2012-10-17T04:35:01.517 に答える
2

うーん、私は聞いたことが.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

いいえ、うまくいきません。

于 2012-10-16T19:06:28.620 に答える
1

構成ファイルを処理してスクリプト間で変数を共有する場合は、次の例を参照してください。

入力ファイル:

$ 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;'
于 2012-10-16T19:13:27.783 に答える
1

そのようなグローバル変数については、環境に設定しています (私は Windows を使用していますが、明らかに Unix でも同じことができます)。Perl では、環境は%ENV変数 (システムの一部) に格納されます。BINDIR は$ENV{BINDIR}.

于 2012-10-17T03:24:01.983 に答える