如何从PERL转储中追溯原始数据结构信息?
我正在分析几个.xlsx工作表,以创建一个新的工作表,其中包含有条件的数据用法。我浏览了下面的数据结构,不知道它是散列数组还是散列数组。 我使用dump命令转储了以下数据结构 打印转储程序$hash_reg_list{first_type}{registers}如何从PERL转储中追溯原始数据结构信息?,perl,Perl,我正在分析几个.xlsx工作表,以创建一个新的工作表,其中包含有条件的数据用法。我浏览了下面的数据结构,不知道它是散列数组还是散列数组。 我使用dump命令转储了以下数据结构 打印转储程序$hash_reg_list{first_type}{registers} [ { 'fields' => [ { 'field_
[
{
'fields' => [
{
'field_name' => ' IP_NAME_AACTV_SFE'
},
{
'field_name' => ' IP_NAME_AACTV_PP'
},
],
'register_name' => ' IP_NAME_AACTV'
},
{
'fields' => [
{
'field_name' => ' IP_NAME_CONFIG_LO_KHD_L2DEMOTE'
}
],
'register_name' => ' IP_NAME_CONFIG'
},
{
'fields' => [
{
'field_name' => ' IP_NAME_JIK_FE_MIN_TST'
},
{
'field_name' => ' IP_NAME_JIK_TM_LOOPA_HYU'
}
],
'register_name' => ' IP_NAME_JIK'
},
]
我想打印上述数据结构中的所有寄存器名称
my @sorted_mm_register_list_1;
foreach my $register_name (sort keys %hash_reg_list{first_type}{registers})
{
$sorted_mm_register_list_1[$list_index] = $register_name;
$list_index++;
print "$hash_reg_list{first_type}{registers}{register_name}";
printf("listindex: %s\n", $list_index);
}
如何追溯从PERL转储的以下数据结构?如果有任何帮助,我们将不胜感激
$hash_reg_list{first_type}{registers}
是对数组的引用。您希望迭代引用数组的元素
for my $register (@{ $hash_reg_list{first_type}{registers} }) {
...
}
或
(->@*
需要Perl 5.24或Perl 5.20,并且使用实验性qw(postderef);
)
$register
是数组当前元素的值,它是对散列的引用。您希望使用键register\u name
打印该散列的元素
say $register->{register_name};
我们一起得到
for my $register (@{ $hash_reg_list{first_type}{registers} }) {
say $register->{register_name};
}
或
如果我们想按寄存器名称对寄存器进行排序,我们将使用以下命令:
for my $register (
sort { $a->{register_name} cmp $b->{register_name} }
@{ $hash_reg_list{first_type}{registers} }
) {
say $register->{register_name};
}
或
有关取消引用的信息以及更多信息的链接,请参阅。语言Perl的名称,而不是Perl。这不是首字母缩略词,抱歉太天真了。在PERL 5.8.1中,当我在代码中放入他的语句“say$register->{register_name}”时,我得到编译错误“cannotcallmethod”say“on unblessed reference at\script…”。我可以用打印语句代替say吗?始终使用
使用strict;使用警告代码>,如果合适,使用使用功能qw(比如)代码>或等效代码。我不想费心把它放到每个代码片段中,因为它会把所有的东西都弄得乱七八糟,特别是因为解决方案在文档中已经很明显了。再说一遍,名称是“Perl”,而不是“Perl”。(你为什么使用20年前的版本?)耶,我用下面的代码使它工作$局部变量=$register->{register\u name};打印“$local_变量”;它应该是打印“$local\u variable\n”
,但表示$local\u变量代码>更短更干净。
for my $register ($hash_reg_list{first_type}{registers}->@*) {
say $register->{register_name};
}
for my $register (
sort { $a->{register_name} cmp $b->{register_name} }
@{ $hash_reg_list{first_type}{registers} }
) {
say $register->{register_name};
}
for my $register (
sort { $a->{register_name} cmp $b->{register_name} }
$hash_reg_list{first_type}{registers}->@*
) {
say $register->{register_name};
}