2016-12-28 53 views
-1

此代码给了我一个全局符号需要明确的包名错误。它在$ user被定义的第二次抛出它。代码下面是错误。我不明白$ user背后的原因没有一个。我试图添加到返回的散列。全局符号需要显式包名perl

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)); 

全局符号 “%用户” 需要在/devroot/depot/wxtap/deploy/scripts//Account.pm行明确包名1340 编译失败在/ usr/lib中/的perl5/Apache2的要求/porting.pm line 90.

回答

4

我怀疑$user是散列参考,而不是散列。要使用它,你需要取消对它的引用第一个(使用->运营商):

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

这也可以写成:

$$user{uid} = ...; 

...那是很不常见的,而且它的多更习惯于使用前一种方法。

+1

就是这样。我很感激。我来自PHP背景。 – jamadri

1

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