gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:44:43 24 4
gpt4 key购买 nike

我在 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)

看起来像
HG00112 {
gained_site {
9:10162 0,
9:10272 0,
9:10326 0,
...
}(tied to Perl6::Hash)

为了更容易阅读(我不关心 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
}

我通常使用 use Data::Printer:from<Perl5> 加载包,并使用来自

Terminal ANSI colors does not work with Inline::Perl5 (Data::Printer)

我已经尝试在 https://metacpan.org/pod/Data::Printer 的建议下使用它,即
use Data::Printer:from<Perl5> {show_tied => 0}
& use Data::Printer:from<Perl5> show_tied => 0
但两者都显示错误

Error while importing from 'Data::Printer': no such tag 'show_tied'



如何从 Data::Printer 获取输出看起来像第二个代码选择,没有丑陋的 var{... ?

- -编辑 - -

略有改进,脚本识别选项 show_tied但仍然不使用它:

我的测试脚本:
use JSON::Fast;
use Data::Printer:from<Perl5> 'show_tied', 0;

my %conc = from-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
}}';

p %conc;

显示几乎无用的输出:
{
HG00112 {
concordant_het 3,
concordant_hom_alt var{HG00112}{concordant_het},
concordant_hom_ref var{HG00112}{concordant_het},
concordant_multiallelic var{HG00112}{concordant_het},
concordant_no_call var{HG00112}{concordant_het},
concordant_site var{HG00112}{concordant_het},
discordant_call_to_no_call var{HG00112}{concordant_het},
discordant_het_to_alt var{HG00112}{concordant_het},
discordant_het_to_ref var{HG00112}{concordant_het},
discordant_hom_alt_to_het var{HG00112}{concordant_het},
discordant_hom_alt_to_ref var{HG00112}{concordant_het},
discordant_hom_ref_to_alt var{HG00112}{concordant_het},
discordant_hom_ref_to_het var{HG00112}{concordant_het},
discordant_multiallelic_gain var{HG00112}{concordant_het},
discordant_multiallelic_loss var{HG00112}{concordant_het},
discordant_no_call_to_call var{HG00112}{concordant_het},
gained_site var{HG00112}{concordant_het},
lost_site var{HG00112}{concordant_het}
} (tied to Perl6::Hash)
} (tied to Perl6::Hash)

最佳答案

Q+A 中所述我在下面介绍和链接,你应该可以控制DP的name选项如下:

use Data::Printer kv { name => '' }

这有望至少消除 var来自“丑陋的 var{...”位。

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

充其量,设置 name''将关闭整个圆形引用显示。 (如果没有,也许将其设置为 0 ?)

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

如果您可以评论 kv { name => '' } 的结果如何我们将取得进展。

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

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

所以我写了一个 Q+A 对来解决这个问题: How do I turn the Perl 5 module Data::Printer's show_tied option off when using it in Raku? .

“丑陋的 var{...

我现在可以提出的第一个也是最重要的一点是,就像 one of their comments on your question 中的@HåkonHægland++ 一样。 ,我无法重现您的问题。

也就是说,当我运行您最后列出的测试代码时,它会显示(在 ... 处省略了一些行):
{
HG00112 {
concordant_het 3,
concordant_hom_alt 4,
concordant_hom_ref 5,
concordant_multiallelic 0,
concordant_no_call 6,
concordant_site 18,
discordant_call_to_no_call 0,
...
discordant_no_call_to_call 0,
gained_site 0,
lost_site 0
}
}

如您所见,没有“丑陋”的循环引用。

这是 show_tied根据上面链接的 Q+A,设置为关闭。但即使是 show_tied保留,默认情况下,我仍然得到上面的,只是几个 (tied to Perl6::Hash)注释。

因此,正如@HåkonHægland++ 在他们对您的问题的另一条评论中所解释的那样, var{...部分可能与 show_tied 无关而是由于您未与我们共享的 JSON 数据中的循环引用。

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

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

关于printing - 在 Perl6 中更改 Data::Printer 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55799219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com