此代码给我一个全局符号需要显式包名称错误。它是第二次定义$ user时抛出它。代码下面是错误。我不明白$ user没有的原因。我正在尝试添加返回的哈希值。
my $self = shift;
my %json = ('err' => 0, 'msg' => '');
my $user = Order2016::get_orders($self->usernum); # Returns Hash
# Query to grab session history data
my $sql = "select rate.duration, rate.price, rate.description, rate.active, order.user_id, order.quantity, order.add_date, order.modify_date, order.end_date, order.last_bill, order.next_bill, item.*
from rate, order, item
where order.user_id = ?
and order.rate_id = rate.id
and rate.item_id = item.id";
my $query = new SQL($sql, $self->usernum);
my $hist = $query->GetRecordsAsHashRef();
$user{'uid'} = $self->usernum;
$self->Print(to_json($user));
全局符号“%user”需要在/devroot/depot/wxtap/deploy/scripts//Account.pm第1340行显式打包名称。 在/usr/lib/perl5/Apache2/porting.pm第90行的comp中编译失败。
答案 0 :(得分:4)
我怀疑[5]
是哈希引用,而不是哈希。要使用它,您需要首先取消引用它(使用$user
运算符):
->
这也可以写成:
$user->{uid} = $self->usernum;
......但这种情况不太常见,使用前一种方法更加惯用。
答案 1 :(得分:1)
请尝试$ user-> {'uid'}。 $ user在这里被用作参考。