Linux 如何";使用「;在运行时创建一个模块
我正在开发一个模块,该模块将在特定条件下调用Perl模块 逻辑是这样的:Linux 如何";使用「;在运行时创建一个模块,linux,perl,Linux,Perl,我正在开发一个模块,该模块将在特定条件下调用Perl模块 逻辑是这样的: $var = "db_tk"; if ( $var =~ /db/ ) { use dbi; } if ( $var =~ /tk/ ) { use tk; } 我无法在运行时使用require运行它们 use Module; 相当于 BEGIN { require Module; import Module; } 所以你想要 require Module; import Mo
$var = "db_tk";
if ( $var =~ /db/ ) {
use dbi;
}
if ( $var =~ /tk/ ) {
use tk;
}
我无法在运行时使用require
运行它们
use Module;
相当于
BEGIN {
require Module;
import Module;
}
所以你想要
require Module;
import Module;
除了在运行时从模块导入没有意义之外。所以你要么想要
# 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.
my $var;
BEGIN {
$var = "db_tk";
}
use if $var =~ /db/, 'DBI';
use if $var =~ /tk/, 'Tk';
相当于
BEGIN {
require Module;
import Module;
}
所以你想要
require Module;
import Module;
除了在运行时从模块导入没有意义之外。所以你要么想要
# 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.
my $var;
BEGIN {
$var = "db_tk";
}
use if $var =~ /db/, 'DBI';
use if $var =~ /tk/, 'Tk';
我无法使用“require”在运行时运行它们。是的,您可以。只要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”在运行时运行它们。是的,您可以。只要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
?你有错误吗?我想你现在对你的问题有了具体的答案,但是关于这个问题的更多信息,请参阅尼尔·鲍尔斯关于为什么你不能使用require
?你有错误吗?我想你现在对你的问题有了具体的答案,但关于这个问题的更多信息,请参阅尼尔·鲍尔斯的文章