Perl-Mojolicious-在模板中打印undef键

时间:2018-09-27 14:35:15

标签: perl mojolicious

为了提供一些上下文,我的控制器从查询中选择一个数组引用。然后将结果打印在这样的模板中。

home.html.ep

 <td> <%= @$query_result[0]->{data} %> </td>    
 <td> <%= @$query_result[1]->{data} %> </td>  
 ....  
 <td> <%= @$query_result[27]->{data} %> </td>    

由于某些结果不存在,Mojolicious引发错误(无法使用undef哈希值...)
我正在尝试做的事情:
当Mojolicious到达undef哈希键/值以显示“无数据”时。
我已经尝试过:

  <td> <%= @$query_result[27]->{data} || 'no data' %> </td>   
  or    
  <td> % (exists(@$query_result[27]->{data})) ? <%= @$query_result[27]->{data} %> : 'no data' </td>   
  or 
  <td>
  % if (exists($query_result[27]->{data})) {
  <%= $query_result[27]->{data} %>
  % } else { 
  'No data'
  % }

我不能只删除<%= $ query_result [27]-> {data}%>,因为它是从在不同参数上运行的查询返回的,并且只有某些参数不会返回第27个数组。

有没有办法实现我正在尝试的目标?谢谢!

1 个答案:

答案 0 :(得分:3)

您似乎正在尝试显示从Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps0或更小的所有索引。您可能想要为此使用循环。

27

现在,您不必再在乎列数了。对标题执行相同操作,您会很高兴。


或者,您需要先检查% foreach my $i ( 0 .. scalar @$query_result ) { <td> <%= @$query_result[$i]->{data} %> </td> % } 中是否有东西,然后才能进行$query_result->[27]检查,因为exists(即无值)不能像哈希引用一样使用。

undef