这是我的代码的一部分:
my $suma = U::round $item->{ suma }; # line 36
$ts += $suma;
$tnds += U::round $suma /6;
}
return( $ts, $tnds );
}
sub create { #line 46
my( $c ) = shift;
my $info = $c->req->json;
my $header = @$info[0];
my $details = @$info[1];
my $agre = D::T Agreement => $header->{ agreement_id };
my( $total_suma, $total_nds ) = total( $details );
my $saldo = 0;
my $iid = @$details[0]->{ period };
my $interval = D::T Period => $iid //7; # line 58
# This is first Invoice if operator do not provide activation date
my $is_first = !$details->[0]{valid_from} && $iid && $interval;
当加载此模块时,我会得到一个错误:
Can't load application from file "lib/MaitreD/Controller/ManualDocument.pm line 38, near "my $interval = D::T Period => $iid /"
Unknown regexp modifier "/6" at lib/MaitreD/Controller/ManualDocument.pm line 38, at end of line
Global symbol "$pkg" requires explicit package name (did you forget to declare "my $pkg"?) at lib/MaitreD/Controller/ManualDocument.pm line 41.
...
这个间接对象调用有问题吗?
因为当我在U::round( $suma /6 )
处加上括号时,就没有错误了。
CORE::say $_ /6
;-)。该代码的作用是将变量$_
的值除以 6 并输出结果。CORE::say
是 Perl 语言中输出函数的一种形式。 - Dadasub T::t { 1 } T::t $_ /6
可能是更好的例子。因为CORE::say $_ /6/
是有效的 Perl($_
被用作文件句柄),而T::t $_ /6/
则不是。 - Dadaperl -e 'print $_ /6'
来复现。令人惊讶的是我以前从未注意到这一点。 - DavidO