如何使用Perl CGI打印哈希值及修复语法编译错误
问题原因
你的代码编译报错是因为不能将foreach循环直接嵌入print的参数列表中,Perl的列表表达式不支持直接插入语句块结构,所以会触发对应语法错误。
修复方案
将固定HTML内容的输出和循环生成的动态内容拆分即可,修正后的代码如下:
#!/usr/bin/perl use strict; use warnings; use CGI ':standard'; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); our %dashboard_data; my $q = CGI->new; # 推荐用类方法调用形式替代间接对象调用,避免歧义 ################################################################################ ## Read the dashboard_data file require "partition_tsv_dashboard.pl"; # 先输出固定的头部内容 print $q->header, $q->start_html('Top Level TSV Dashboards'), $q->h1('Top Level TSV Dashboards'); # 循环输出动态生成的h2标签 foreach my $model (sort keys %{$dashboard_data{'project'}}){ print $q->h2("Model: $model"); } # 最后输出HTML结尾 print $q->end_html;
额外说明
- 原有写法中
new CGI属于间接对象调用语法,容易和同名函数产生歧义,更推荐用CGI->new的写法 - 你引入的
partition_tsv_dashboard.pl中对全局哈希%dashboard_data的赋值是生效的,不需要额外做映射操作,只要保证文件路径正确,就可以正常读取哈希内容输出到HTML
内容的提问来源于stack exchange,提问作者Satish Sajjanar
相关产品推荐
相关产品推荐

