【发布时间】:2021-10-22 02:46:43
【问题描述】:
这是我的代码的一部分:
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;-) -
虽然
sub T::t { 1 } T::t $_ /6可能是更好的例子。因为CORE::say $_ /6/是有效的 Perl($_用于文件句柄),而T::t $_ /6/不是。 -
也可以用
perl -e 'print $_ /6'重现。令人惊讶的是我以前从未注意到它。
标签: regex perl parsing operators