Perl6中的多维哈希元素

con*_*con 7 hash perl6

我正在尝试在Perl6中分配哈希变量,就像在Perl中一样.当我正在阅读文件时,我会接受某些元素并分配给哈希:

%key<$barcode><$position> = $sample-id
Run Code Online (Sandbox Code Playgroud)

这将是Perl5中的情况

$key{$barcode}{$position} = $sample_id
Run Code Online (Sandbox Code Playgroud)

我可以在我这样做之后打印哈希分配,所以我认为分配工作正常.

当我用这个哈希打印时

say %key.perl;
Run Code Online (Sandbox Code Playgroud)

这只给出了

{"\$barcode" => ${"\$position" => "ZZ12345"}}
Run Code Online (Sandbox Code Playgroud)

如何打印出像Perl5 Data::DumperDDP https://metacpan.org/pod/Data::Printer这样的多维哈希,因为say %key.perl它似乎不适用于多维哈希?

Sci*_*mon 9

<>{''}perl5中的相同,因此只应用于字符串键.如果要使用变量名称,请执行以下操作:

%key{$barcode}{$position} = $sample_id 这应该可以解决问题.

您还可以使用双尖括号选项进行字符串插值.

%key<<$barcode>><<$position>> = $sample_id

  • 我通常建议不要使用`<< ... >>`进行插值,因为它将空格视为分隔符.考虑:`perl6 -e'我的$ key ="1 2 3"; 我的%hash = $ key => 42; 说%hash << $ key >>` (3认同)