Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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-Mojolicious-Print模板中的未定义密钥_Perl_Mojolicious - Fatal编程技术网

Perl-Mojolicious-Print模板中的未定义密钥

Perl-Mojolicious-Print模板中的未定义密钥,perl,mojolicious,Perl,Mojolicious,为了提供一些上下文,我的控制器从查询中选择一个数组引用。然后结果像这样打印在模板中 home.html.ep <td> <%= @$query_result[0]->{data} %> </td> <td> <%= @$query_result[1]->{data} %> </td> .... <td> <%= @$query_result[27]->{data}

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

home.html.ep

 <td> <%= @$query_result[0]->{data} %> </td>    
 <td> <%= @$query_result[1]->{data} %> </td>  
 ....  
 <td> <%= @$query_result[27]->{data} %> </td>    
{data}%>
{data}%>
....  
{data}%>
由于某些结果不存在,Mojolicious会抛出一个错误(不能使用未定义的哈希值…)
我想做的事:
当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'
  % }
{data}| |“无数据”%>
或
%(存在(@$query_result[27]->{data}))?{data}%>:“没有数据”
或
%if(存在($query_result[27]->{data})){
{data}%>
%}否则{
“没有数据”
% }
我不能仅仅删除{data}%>因为它是从运行在不同参数上的查询返回的,只有一些参数不返回第27个数组


有什么方法可以实现我的目标吗?谢谢大家!

看起来您正在尝试显示从
0
27
或更少的所有索引。你可能想用一个循环

% foreach my $i ( 0 .. scalar @$query_result ) {
<td> <%= @$query_result[$i]->{data} %> </td>    
% }

试试这个:
{data}@{$query\u result[27]->{data}:“%$no data”>
这似乎不起作用:全局符号“@query\u result”需要显式的包名(您是否忘记在模板中声明“my@query\u result”?),您的意思是?[27] ? @$query_result[27]->{data}:“无数据”正如注释所示,
@$query_result[27]->{data}
有点胡说八道;这意味着取消引用$query_result并获取一个仅包含元素27的列表切片。您的意思是
$$query\u result[27]->{data}
,通常写为
$query\u result->[27]{data}
(括号之间的箭头是可选的)。请记住,括号的类型决定了要取消引用的数据结构,符号决定了要检索的是单个元素还是列表。感谢您的快速回答,这就是我要查找的内容。[27] ? @$query_result[27]->{data}:“no data”是否有较短的编写方法?是的,但不一定是更漂亮的方法:
($query_result->[27]/{data=>'no data'})->{data}
<td><%= $query_result->[27] ? @$query_result[27]->{data} : 'no data' </td>