特定の条件でPerlモジュールを呼び出すモジュールを開発中です。実行時にモジュールを使用する方法
とロジックはこのようになります。
$var = "db_tk";
if ($var =~ /db/) {
use dbi;
}
if ($var =~ /tk/) {
use tk;
}
私はrequire
を使用して、実行時にそれらを実行することはできませんよ。
特定の条件でPerlモジュールを呼び出すモジュールを開発中です。実行時にモジュールを使用する方法
とロジックはこのようになります。
$var = "db_tk";
if ($var =~ /db/) {
use dbi;
}
if ($var =~ /tk/) {
use tk;
}
私はrequire
を使用して、実行時にそれらを実行することはできませんよ。
use Module;
は意味がありませんので、あなたは実行時にモジュールからのインポートを除き
require Module;
import Module;
をしたい
BEGIN {
require Module;
import Module;
}
に相当します。
# Conditionally load modules at compile-time.
my $var;
BEGIN {
$var = "db_tk";
}
use if $var =~ /db/, 'DBI';
use if $var =~ /tk/, 'Tk';
必要「私が使用して、実行時にそれらを実行することはできませんよ」:だからどちらかが
# Conditionally load modules at runtime.
# Gotta use fully-qualified names to call provided functions.
my $var = "db_tk";
require DBI if $var =~ /db/;
require Tk if $var =~ /tk/;
または
# Conditionally load modules at compile-time.
BEGIN {
my $var = "db_tk";
if ($var =~ /db/) { require DBI; import DBI; }
if ($var =~ /tk/) { require Tk; import Tk; }
}
をしたい、後者を簡素化するために使用することができます""はい、そうです。
use
作品、
require
も動作することをどこか:
use
通話
require
を使用すると、標準のCPANモジュールDBI
とTk
を使用するためのものと仮定すると、そしてないdbi
とtk
、あなたはこの
if ($var =~ /db/) {
use DBI;
}
if ($var =~ /tk/) {
use Tk;
}
以上が必要です、 BEGIN
ブロックに$var
を定義していれば、if
プラグマを使用できます。
use if $var =~ /db/, DBI;
use if $var =~ /tk/, Tk;
なぜあなたは 'require'を使うことができませんか?間違いはありますか? – xxfelixxx
あなたの質問に具体的な回答があると思いますが、この件についてはNeil Bowersの記事「[他のモジュールをロードできるCPANモジュール]」(http://neilb.org/reviews/module-loading .html) –