如何使用 perl CGI 打印哈希值
Posted
技术标签:
【中文标题】如何使用 perl CGI 打印哈希值【英文标题】:How to print hash values using perl CGI 【发布时间】:2021-11-08 07:06:13 【问题描述】:我是 perl CGI 的新手,正在尝试使用 perl CGI 将哈希数据打印到 html。下面是我的代码。
#!/usr/bin/perl
use strict;
use warnings;
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
our %dashboard_data;
my $q = new CGI;
################################################################################
## 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'),
foreach my $model (sort keys %$dashboard_data'project')
$q->h2("Model: $model"),
$q->end_html;
partition_tsv_dashboard.pl 是嵌套散列。包含以下数据。
#!/usr/bin/perl
$dashboard_data 'project' 'model1' 'P00' 'TSV-193' 'COMP_0_P00' = '';
$dashboard_data 'project' 'model2' 'P00' 'TSV-001' 'COMP_0_P00' = '';
$dashboard_data 'project' 'model3' 'P00' 'TSV-001' 'COMP_0_P00' = '';
$dashboard_data 'project' 'model4' 'P00' 'TSV-001' 'COMP_0_P00' = '';
$dashboard_data 'project' 'model5' 'P00' 'TSV-001' 'COMP_0_P00' = '';
1;
当我尝试执行 CGI 程序时出现以下错误。如何将哈希值映射到 CGI 对象?有人可以帮我解决这个问题吗?
输出。
Software error:
syntax error at /web/keystone/cgi-bin/tsv_dashboard.pl line 26, near "$model ("
Execution of /web/keystone/cgi-bin/tsv_dashboard.pl aborted due to compilation errors.
【问题讨论】:
我认为你不能在另一个列表中有一个 for 循环。尝试拆分打印语句而不是 【参考方案1】:print
语句的参数列表中不能有 for
循环。而是尝试像这样拆分它。
print $q->header,
$q->start_html('Top Level TSV Dashboards'),
$q->h1('Top Level TSV Dashboards');
foreach my $model (sort keys %$dashboard_data'project')
print $q->h2("Model: $model");
print $q->end_html;
【讨论】:
h2 行中的 HTML 注入错误 感谢您的评论。这将取决于脚本partition_tsv_dashboard.pl
的作用对吗?因为它负责填充%dashboard_data
哈希。如果脚本不使用用户输入来填充散列,那么据我所知,它不可能是 HTML 注入错误的来源..
我发现%dashboard_data
不太可能包含 HTML 而不是纯文本。【参考方案2】:
@Håkon Hægland 的先前答案可能是最好的答案,但您可以使用 map
来获得类似的结果。
use CGI ':standard';
my $q = new CGI;
my @a = ("blah", "wooble");
print $q->h1("things"), "\n",
(map $q->h2($_) @a), "\n",
$q->br, "\n";
要得到这个输出:
% perl test.pl
<h1>things</h1>
<h2>blah</h2><h2>wooble</h2>
<br />
【讨论】:
以上是关于如何使用 perl CGI 打印哈希值的主要内容,如果未能解决你的问题,请参考以下文章