Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 Can';t使用字符串(";0";)作为数组引用,而";严格参考;使用中_Perl_Catalyst - Fatal编程技术网

Perl Can';t使用字符串(";0";)作为数组引用,而";严格参考;使用中

Perl Can';t使用字符串(";0";)作为数组引用,而";严格参考;使用中,perl,catalyst,Perl,Catalyst,我的代码是: my $mortgageValue = $c->forward('/_asset/_real_estate/_mortgage/browse/vw_asset_real_estate_mortgage', ["data", "getRowHash", "*", "asset_real_estate_id='".$realEstateId."' AND active='1'", "", "1"]); if (@{$mortgageValue}) { # is the line

我的代码是:

my $mortgageValue = $c->forward('/_asset/_real_estate/_mortgage/browse/vw_asset_real_estate_mortgage', ["data", "getRowHash", "*", "asset_real_estate_id='".$realEstateId."' AND active='1'", "", "1"]);
if (@{$mortgageValue}) { # is the line that shows the error
        $amortizationPeriodDetails = $mortgageValue->{amortization_period}||"";
}

我认为查询返回null,因为条件没有值,但我如何检查它?

$mortgageValue
不是数组引用。所以你不能去引用它。看起来,
$mortgageValue
是一个标量

理想情况下,forward方法将返回unde;有时返回0而有时返回arrayref的方法更难使用。但如果做不到这一点,你可以:

if ( @{ $mortgageValue || [] } ) {


等一下;第二行,$mortgageValue是arrayref,下一行是hashref;它到底是什么?如果没有严格的引用,符号引用仍然是合法的。在这种情况下,您将覆盖应包含程序名的
$0
。让这成为另一个原因,即符号引用是难以追踪的bug的极好来源。即使
forward
返回undef,也必须使用它们。
if ( $mortgageValue && @$mortgageValue ) {