Невозможно импортировать модуль Perl5 с помощью Inline :: Perl5 в Perl6 - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь импортировать модуль 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, потому что я не могу его найти.

РЕДАКТИРОВАТЬ: Это решается здесь: как загрузить Perl5's Data :: Printer в Perl6?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Со страницы 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 является более простое использование и синтаксис.Это не такМодуль 'Inline :: Perl5' должен быть в состоянии загружаться в сценарии, как и любой другой модуль, а не как опция в командной строке.

0 голосов
/ 02 февраля 2019

Думаю, вы наткнулись на ошибку в Inline::Perl5, которая, по-видимому, возникает в модуле Data::Printer Perl 5, поэтому я бы посоветовал вам открыть для нее проблему на https://github.com/niner/Inline-Perl5/issues.

* 1006.* Между тем синтаксис стал намного проще.После того, как вы установили 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.

...