libパスに$ var変数を使用したいと思います。libパスでどのように変数を使用しますか?
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
私はこれを行うときしかし、それはエラーをスローします。
use lib "/home/usr/bibfile/lib/";
の代わりにuse lib "$var/lib/";
を使用します。
変数を割り当てて、libモジュールの設定で使用できるようにするにはどうすればよいですか?
libパスに$ var変数を使用したいと思います。libパスでどのように変数を使用しますか?
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
私はこれを行うときしかし、それはエラーをスローします。
use lib "/home/usr/bibfile/lib/";
の代わりにuse lib "$var/lib/";
を使用します。
変数を割り当てて、libモジュールの設定で使用できるようにするにはどうすればよいですか?
まず、単純な構文エラーがあります。最初の行の後には;
がありません。 my
変数はuse lib
で正常に動作するはずです。すべてuse
ディレクティブはBEGIN
ブロック内で実行されているので、あなたもBEGIN
ブロックで初期化を配置する必要がありますので、
しかし、あなたの変数は、あなたがuse
実行し、現時点では未初期化されます。あなたが達成しようとしているものについて
$VAR1 = [
'/home/usr/bibfile/lib/',
# ... more ...
];
@ikegami、libは、見つかった場合、ターゲットの標準バージョンとアーチのサブディレクトリをチェックして追加します。 –
わからないが、FindBin::libsのための作業のように思える:
my $var;
BEGIN { $var = "/home/usr/bibfile"; }
use lib "$var/lib/";
use Data::Dumper;
print Dumper \@INC;
は与える、
my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";
私は 'use lib" $ var/lib/";' 'use lib"/home/usr/bibfile/lib/";'を使いたいと思っています。どのようにして変数を割り当てることができるので、libモジュールの設定で使用することができます。 – Sourcecode
OK、あなたの特定のニーズに合わせて答えを編集:)しかし、私はハードコードされた絶対パスを使用しないようにあなたの現在のスクリプトに相対的なものを使用することをお勧めします(FindBin :: libsの目的です) – creaktive
@creaktive今や始めて遭遇した質問者と同じエラーに悩まされています。あなたは、受諾された答えの中の解を使ってこれを修正することができます。 – MattLBeck
あなたがすることはできませんuse
理由ディレクティブはコンパイル時に評価され、他の変数は実行時に評価されます。
# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;
あなたは非標準的なディレクトリにいくつかのライブラリを持っていて、それを使いたいん:あなたのlibがあなたの元のスクリプトにどこかに相対配置されている場合
は、あなたが標準モジュール
FindBin
を使用することができますか? – xhudikはい。図書館は非標準のディレクトリにあります。 – Sourcecode