You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl如何打印哈希内嵌套数组元素 修复全局符号访问报错

问题场景

需要解析打印多维结构的API返回内容,初始编写的Perl代码如下:

use strict;
use warnings;
use Data::Dumper;

my $content={
  'school_set' => 'SSET1234',
  'result' => [
    {
      'school_name' => 'school_abc',
      'display_value' => 'IL25',
      'school_link' => 'example.com',
      'status' => 'registerd',
      'status_message' => 'only arts',
      'school_id' => '58c388d40596191f',
    }
  ],
  'school_table' => 'arts_schools'
};

print "school_name is=".$content{result}[0]{school_name};
print "school_status is=".$content{result}[3]{status};

运行代码后抛出如下报错:

Global symbol "%content" requires explicit package name (did you forget to declare "my %content"?) at test8.pl line 20.
Global symbol "%content" requires explicit package name (did you forget to declare "my %content"?) at test8.pl line 21.

目标输出格式为:

school_name = school_abc
school_status = registered
问题根因

代码存在两处核心错误:

  • $content是哈希引用类型的标量变量,原代码错误使用普通哈希%content的键访问语法,Perl中访问引用的内部元素需要使用解引用箭头->
  • result字段对应的值是数组引用,当前数组内仅存在索引为0的1个元素,原代码使用索引3访问不存在的元素,无法获取正确值
  • 额外细节:原测试数据中status字段值拼写为registerd,和预期要求输出的registered存在拼写差异,若要完全匹配输出需要修正该字段值
正确实现代码
use strict;
use warnings;
use Data::Dumper;

my $content={
  'school_set' => 'SSET1234',
  'result' => [
    {
      'school_name' => 'school_abc',
      'display_value' => 'IL25',
      'school_link' => 'example.com',
      # 修正原字段拼写,匹配预期输出
      'status' => 'registered',
      'status_message' => 'only arts',
      'school_id' => '58c388d40596191f',
    }
  ],
  'school_table' => 'arts_schools'
};

# 哈希/数组引用访问使用->,数组取存在的0索引元素
print "school_name = ".$content->{result}[0]{school_name}."\n";
print "school_status = ".$content->{result}[0]{status}."\n";
运行结果

执行上述代码后将输出符合预期的结果:

school_name = school_abc
school_status = registered

若业务场景不允许修改原接口返回的字段值,最终输出的status值会保留原数据的拼写registerd,可根据实际需求调整。

内容的提问来源于stack exchange,提问作者Rasheed Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:27:41