全局符号需要显式包名perl

时间:2016-12-28 17:21:27

标签: perl

此代码给我一个全局符号需要显式包名称错误。它是第二次定义$ 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中编译失败。

2 个答案:

答案 0 :(得分:4)

我怀疑[5]是哈希引用,而不是哈希。要使用它,您需要首先取消引用它(使用$user运算符):

->

这也可以写成:

$user->{uid} = $self->usernum;

......但这种情况不太常见,使用前一种方法更加惯用。

答案 1 :(得分:1)

请尝试$ user-> {'uid'}。 $ user在这里被用作参考。