在Perl6中更改Data :: Printer中的参数

con*_*con 6 printing perl6

我正在Perl6中打印数据,Data::Printer这是一个很棒的程序包,但是我试图更改参数,但我不能。

例如,我想要:

HG00112 {
    gained_site                    {
        9:10162   0,
        9:10272   var{HG00112}{gained_site}{9:10162},
        9:10326   var{HG00112}{gained_site}{9:10162},
        ...
}(tied to Perl6::Hash)
Run Code Online (Sandbox Code Playgroud)

看起来像

HG00112 {
    gained_site                    {
        9:10162   0,
        9:10272   0,
        9:10326   0,
        ...
}(tied to Perl6::Hash)
Run Code Online (Sandbox Code Playgroud)

易于阅读(我不在乎tied to Perl6::Hash

可以使用JSON看到此哈希元素:

"HG00112": {
    "discordant_multiallelic_loss": 0,
    "concordant_hom_alt": 4,
    "discordant_het_to_alt": 0,
    "discordant_hom_alt_to_ref": 0,
    "discordant_hom_ref_to_alt": 0,
    "lost_site": 0,
    "concordant_het": 3,
    "discordant_multiallelic_gain": 0,
    "discordant_hom_alt_to_het": 0,
    "discordant_call_to_no_call": 0,
    "discordant_het_to_ref": 0,
    "concordant_hom_ref": 5,
    "concordant_site": 18,
    "discordant_no_call_to_call": 0,
    "concordant_no_call": 6,
    "concordant_multiallelic": 0,
    "gained_site": 0,
    "discordant_hom_ref_to_het": 0
}
Run Code Online (Sandbox Code Playgroud)

我通常使用加载软件包use Data::Printer:from<Perl5>,并使用的建议

终端ANSI颜色不适用于Inline :: Perl5(数据::打印机)

我已经尝试过使用https://metacpan.org/pod/Data::Printer的建议,即

use Data::Printer:from<Perl5> {show_tied => 0}

use Data::Printer:from<Perl5> show_tied => 0

但都显示错误

从“ Data::Printer” 导入时出错:没有这样的标签“ show_tied

如何在Data::Printer没有丑陋的情况下使输出看起来像第二个代码选择var{...

rai*_*iph 2

正如Q+A下面我介绍和链接中所解释的,您应该能够控制 DP 的name选项,如下所示:

\n\n
use Data::Printer kv { name => \'\' }\n
Run Code Online (Sandbox Code Playgroud)\n\n

这有望至少消除var“丑陋var{...”的部分。

\n\n

如果是这样,那至少将证明你现在能够控制 DP 的选项。

\n\n

最好的情况是,设置name\'\'将关闭整个循环参考显示。(如果没有,也许将其设置为0?)

\n\n

最坏的情况是,您仍然会var在循环引用的开头看到三个字母“名称”,我认为我们必须找出原因。

\n\n

如果您能评论一下事情的进展情况,kv { name => \'\' }我们就会取得进展。

\n\n

show_tied在 Raku 中使用Perl 5 模块 Data::Printer 时如何关闭它的选项?

\n\n

你的问题的一个关键部分,你明确地“不关心......具体”(该(tied to Perl6::Hash)位,由 DP 的show_tied选项控制)仍然非常值得明确解决。如果不出意外的话,当尝试在 Raku 语句中设置几乎任何Perl 模块的几乎任何命名选项时use,它不可避免地会涉及到常见问题解答。

\n\n

所以我写了一个问答对来解决这个问题:在 Raku 中使用Perl 5 模块 Data::Printer 时如何关闭它的选项?show_tied

\n\n

“丑陋的var{...

\n\n

我现在可以提出的第一也是最重要的一点是,就像 @H\xc3\xa5konH\xc3\xa6gland++ 在他们对您的问题的评论之一中一样,我无法重现您的问题。

\n\n

也就是说,当我运行最后列出的测试代码时,它显示(在 处省略了一些行...):

\n\n
{\n    HG00112   {\n        concordant_het                 3,\n        concordant_hom_alt             4,\n        concordant_hom_ref             5,\n        concordant_multiallelic        0,\n        concordant_no_call             6,\n        concordant_site                18,\n        discordant_call_to_no_call     0,\n        ...\n        discordant_no_call_to_call     0,\n        gained_site                    0,\n        lost_site                      0\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,没有任何“丑陋”的循环引用。

\n\n

show_tied根据上面链接的 Q+A,此设置已设置为关闭。但即使show_tied保留打开状态,按照默认设置,我仍然得到上面的内容,只是带有一些(tied to Perl6::Hash)注释。

\n\n

因此,正如 @H\xc3\xa5konH\xc3\xa6gland++ 在对您的问题的另一条评论中所解释的那样,这些部分var{...可能与您的 JSON 数据中的循环引用无关,show_tied而您没有与我们共享。

\n\n

简而言之,您的问题与您的数据和/或 DP 选项的使用有关name,而不是其show_tied选项。

\n\n

我认为我们 Raku 人员不太可能帮助您处理您的数据(这可能不是由 Raku 生成的),但我们应该能够帮助取得进展,甚至可能在适当的程度上解决您的问题使用一些 DP 选项。

\n