使用内联:: Perl5中无法导入Perl5的模块到Perl6

问题描述 投票:6回答:2

我试图导入Perl5的模块,我真的很喜欢https://metacpan.org/pod/Data::Printer使用从手册页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?我也很高兴,如果有一个类似的方式来获得在Perl6彩色/标签输出像我就从Data::Printer得到,因为我无法找到它。

编辑:这是在这里解决:how to load Perl5's Data::Printer in Perl6?

perl6
2个回答
7
投票

我想你无意中发现在Inline::Perl5似乎发生了Data::Printer的Perl 5模块中的错误,所以我建议你在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的升级。


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的本来。一个使用Perl6在Perl5中的主要观点是简单的用法和语法。这是不是。在“内联:: Perl5的”模块应该能够在脚本中加载像其他的模块,而不是在命令行选项。

© www.soinside.com 2019 - 2024. All rights reserved.