Как загрузить Data :: Printer в Perl5 в Perl6? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытался загрузить модуль Perl5 Data::Printer в Perl6, но мне трудно.

Я спрашивал об этом раньше, Невозможно импортировать модуль Perl5 с помощью Inline :: Perl5в Perl6 и получил полезный совет от @raiph и Элизабет, но ему посоветовали задать еще один вопрос

con@con-VirtualBox:~$ perldoc -lm Data::Printer
/usr/local/share/perl/5.26.0/Data/Printer.pm
con@con-VirtualBox:~$ perl6
To exit type 'exit' or '^D'
> use Inline::Perl5;
Nil
> use lib:from<Perl5> '/usr/local/share/perl/5.26.0/Data/';
Nil
> my @a = 1,2,3,4
[1 2 3 4]
> p @a
===SORRY!=== Error while compiling:
Undeclared routine:
    p used at line 1

Подпрограмма p должна быть загружена, и все же это не так.

альтернативно, я пытаюсь загрузить, но это также приводит к ошибке

> use Data::Printer:from<Perl5>
Unsupported type NativeCall::Types::Pointer<94859011731840> 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 sub EXPORT at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 805
  in any statement_control at /usr/lib/nqp/lib/Perl6/Grammar.moarvm line 1

Я понятия не имею, как я могу с пользой загрузить эту библиотеку в скрипт Perl6.

1 Ответ

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

Неподдерживаемый тип NativeCall :: Types :: Pointer <94859011731840> в p5_to_p6

Это ошибка в Inline::Perl , исправленная 4 дня назад .

Вы не получите эту последнюю версию, если просто сделаете zef install Inline::Perl5.Вот что я сделал:

# Install a position independent version of perl, 
#   see  https://github.com/niner/Inline-Perl5/
$ perlbrew install perl-5.29.7 --as perl-5.29.7-PIC -Duseshrplib -Dusemultiplicity
$ perlbrew install-cpanm
$ perlbrew use perl-5.29.7-PIC
$ cpanm Data::Printer
$ git clone https://github.com/niner/Inline-Perl5.git
$ cd Inline-Perl5/
# Run: 'zef uninstall Inline::Perl5' first if you already have it installed
$ perl6 configure.pl6
$ make
$ make install # this installs the latest version of Inline::Perl5
$ cd ..

Затем я проверил это с помощью этого сценария ( p.p6 ):

use Data::Printer:from<Perl5>;
my @a = 1,2,3,4;
p @a;

Запуск perl6 p.p6 теперь дает:

[
    [0] 1,
    [1] 2,
    [2] 3,
    [3] 4
]

Редактировать : Если вы уже установили независимый от позиции двоичный файл perl, описанную выше процедуру установки можно упростить:

$ git clone https://github.com/niner/Inline-Perl5.git
$ cd Inline-Perl5/
$ zef uninstall Inline::Perl5
$ zef install . # or alternatively create the `Makefile` as above 
...