问题描述
当我运行这段代码时
require Readline;
my $rl = Readline.new;
my $string = $rl.readline( ':');
$string.say;
我收到此错误消息:
您不能创建这种类型的实例 (Readline)
当我使用 use
加载 Readline
时,它可以工作。为什么 require Readline
不起作用?
解决方法
由于 require
导致模块在运行时加载,因此 Readline
符号的查找也必须推迟到运行时。这可以使用 ::('Type::Name')
语法完成,如下所示:
require Readline;
my $rl = ::('Readline').new;
my $string = $rl.readline( ':');
$string.say;