Терминальные цвета ANSI не работают с Inline :: Perl5 (Data :: Printer) - PullRequest
0 голосов
/ 09 февраля 2019

Следующий скрипт Perl 5:

use strict;
use warnings;

use Data::Printer;
my @a = (1,2,3,4);
p @a;

дает вывод:

enter image description here

(обратите внимание на синий цвет), тогда какэто сценарии Perl 6:

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

дает вывод:

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

, но цифры не окрашены (как в случае с Perl 5 выше).

Системная информация :

$ perl --version
This is perl 5, version 29, subversion 3 (v5.29.3) built for x86_64-linux
$ perl6 -e '.say for $*DISTRO, $*VM, $*PERL.compiler.version'
ubuntu (18.10.Cosmic.Cuttlefish)
moar (2018.11)
v2018.11

1 Ответ

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

Похоже, что это проблема с версией 0.40 Data::Printer, которая является текущей версией в metacpan.Если я устанавливаю версию 0.99 с GitHub , я получаю цвета и с Perl 6.Смотрите также этот выпуск .

Я немного отладил версию 0.40, и похоже, что единственное отличие между вызовом p @a из версии Perl 5 и тем же вызовом из Perl 6 заключается в том, что вызов Perl 6 вызывается в списке.контекст, поэтому wantarray возвращает true для вызова Perl 6, это явно заставляет Data::Printer как-то отключить раскраску.

...