gpt4 book ai didi

linux - 如何在运行时 "use"一个模块

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:00 24 4
gpt4 key购买 nike

我正在开发一个将在特定条件下调用 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 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.

BEGIN {
my $var = "db_tk";

if ($var =~ /db/) { require DBI; import DBI; }
if ($var =~ /tk/) { require Tk; import Tk; }
}

if module可用于简化后者:

# Conditionally load modules at compile-time.

my $var;
BEGIN {
$var = "db_tk";
}

use if $var =~ /db/, 'DBI';
use if $var =~ /tk/, 'Tk';

关于linux - 如何在运行时 "use"一个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com