我正在尝试导入我非常喜欢https://metacpan.org/pod/Data::Printer的Perl5模块 使用手册页https://modules.perl6.org/dist/Inline::Perl5:cpan:NINE
中的建议使用非常简单的脚本
use Inline::Perl5;
my $p5 = Inline::Perl5.new;
$p5.use('Data::Printer');
但随后出现此错误:
Unsupported type NativeCall::Types::Pointer<94774650480224> in p5_to_p6
in method p5_to_p6_type at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 298
in method unpack_return_values at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 375
in method invoke at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 446
in method import at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 776
in method use at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 898
in block <unit> at inline_perl5.p6 line 4
这里出了什么问题?如何将这个perl5模块导入到perl6中?如果有类似的方法可以像我从Data::Printer
一样获得Perl6中的彩色/标签输出,因为我找不到它,我也将很高兴。
答案 0 :(得分:7)
我认为您偶然发现了Inline::Perl5
Perl 5模块中出现的Data::Printer
中的错误,因此建议您在https://github.com/niner/Inline-Perl5/issues上为其打开一个问题。
同时,语法变得更加简单。安装Inline::Perl5
之后,您只需添加:from<Perl5>
副词即可从Perl 5加载模块:
use Data::Printer:from<Perl5>;
不幸的是,此刻会产生您已经描述的相同错误:
===SORRY!===
Unsupported type NativeCall::Types::Pointer<140393737675456> in p5_to_p6
因此,我认为没有解决方案不需要升级Inline::Perl5
或Rakudo Perl 6。
答案 1 :(得分:2)
在github页面上,https://github.com/niner/Inline-Perl5/issues/128
> perl6 -Ilib -e 'use Data::Printer:from<Perl5>; my @a = 1, 2, [3, 4, ${a => 1}]; p @a'
[
[0] 1,
[1] 2,
[2] [
[0] 3,
[1] 4,
[2] {
a 1
} (tied to Perl6::Hash)
]
]
我对此并不特别满意。这比perl5复杂得多。在Perl5上使用Perl6的要点之一是更简单的用法和语法。不是吗像其他模块一样,“ Inline :: Perl5”模块应该能够在脚本中加载,而不是命令行中的选项。