Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中解析哈希引用_Perl - Fatal编程技术网

在perl中解析哈希引用

在perl中解析哈希引用,perl,Perl,我对perl哈希有疑问,对此的任何建议都非常感谢——下面只是代码片段-- 输出是这样的 $VAR1 = { a => 1, b => 2, g => 1, }; $VAR2 = { c => 1, d => 2, g => 1, b => 1434, h => 2 }; $VAR3 = { e => 1, a => 232, f => 2 }; $VAR4 = { g => 1, h => 2, a =>

我对perl哈希有疑问,对此的任何建议都非常感谢——下面只是代码片段--

输出是这样的

$VAR1 = { a => 1, b => 2, g => 1, }; 
$VAR2 = { c => 1, d => 2, g => 1, b => 1434, h => 2 }; 
$VAR3 = { e => 1, a => 232, f => 2 }; 
$VAR4 = { g => 1, h => 2, a => 5, b => 19 };

注意:它是一个分号,而不是散列引用之间的逗号!!我的任务是从每个hashref中收集a和b值(如果hashref中不存在a或b,则将其替换为0)并将其存储在哈希中。如果hashref用逗号连接很容易,因为它是一个分号。尽管进行了多次尝试,但这对我来说非常困难,请帮助。

您误解了
Data::Dumper
的输出。您需要将数组引用发送到转储程序函数:

print Dumper \@results;
否则,将发送阵列中要单独打印的元素列表

您应该得到如下输出:

$VAR1 = [
          {
            'a' => 1,
            'g' => 1,
            'b' => 2
          },
          {
            'c' => 1,
            'h' => 2,
            'b' => 1434,
            'g' => 1,
            'd' => 2
          },
          {
            'e' => 1,
            'a' => 232,
            'f' => 2
          },
          {
            'a' => 5,
            'h' => 2,
            'b' => 19,
            'g' => 1
          }
        ];

不确定如何“将a和b值存储在散列中”,但这应该可以让您从以下内容开始:

for my $result (@results) {
  my $a_val = $result->{a} || 0;
  my $b_val = $result->{a} || 0;

  # now do something with $a_val and $b_val ...

}

超级!我只是使用print语句来查看@results的输出,从这一点来看,我的@results=$sp->get\u list\u items($listid,$viewid);我不知道如何解释@results输出以创建由a和b组成的散列。非常感谢您的帮助。不客气。如果你觉得答案解决了你的问题,别忘了接受它。
我对你之前的答案很满意,但我的问题还没有解决--->从这一点上看,我的@results=$sp->get\u list\u items($listid,$viewid);我不知道如何解释@results输出以创建由a和b组成的散列
您迭代数组并收集a/b值,如果a/b值不存在,则收集0。你知道你不必在注释中使用代码格式。顺便说一句,@TOM,你不需要将整个注释标记为
code
:)
for my $result (@results) {
  my $a_val = $result->{a} || 0;
  my $b_val = $result->{a} || 0;

  # now do something with $a_val and $b_val ...

}