libパスで$var変数を使用したいと思います。
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
ただし、これを行うとエラーがスローされます。
use lib "$var/lib/";
の代わりに使用したいのですがuse lib "/home/usr/bibfile/lib/";
。
libモジュールの設定で使用できるように、変数を割り当てるにはどうすればよいですか?
libパスで$var変数を使用したいと思います。
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
ただし、これを行うとエラーがスローされます。
use lib "$var/lib/";
の代わりに使用したいのですがuse lib "/home/usr/bibfile/lib/";
。
libモジュールの設定で使用できるように、変数を割り当てるにはどうすればよいですか?
変数はuse lib
、他の文字列と同じように、うまく機能します。ただし、すべてのuse
ディレクティブはBEGIN
ブロックで実行されるため、実行した時点では変数はまだ初期化されていないuse
ため、初期化もブロックに入れる必要がありBEGIN
ます。
my $var;
BEGIN { $var = "/home/usr/bibfile"; }
use lib "$var/lib/";
use Data::Dumper;
print Dumper \@INC;
与える:
$VAR1 = [
'/home/usr/bibfile/lib/',
# ... more ...
];
何を達成しようとしているのかわかりませんが、FindBin :: libsのタスクのようです:
my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";
use
ディレクティブはコンパイル時に評価され、他の変数は実行時に評価されるため、できません。
libが元のスクリプトに対して相対的な場所にある場合は、標準モジュールを使用できますFindBin
。
# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;