2016-12-28 18 views
-1

このコードはグローバルシンボルに明示的なパッケージ名エラーが必要です。それは$ userが定義された2回目にそれを投げています。コードの下にエラーがあります。私は$ 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 90.

答えて

4

$userはハッシュの参照であると思われます。ハッシュではありません。これは、のように書くこともでき

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

$$user{uid} = ...; 

...しかし、それははるかに少ない一般的だし、それは多くのだ、それを使用するには、(->演算子を使用して)最初にそれを間接参照する必要があります前者の方法を使うのはもっと慣用的です。

+1

それでした。それは有り難いです。私はPHPの背景から来た。 – jamadri

1

$ user - > {'uid'}を試してください。 $ userはここで参照として使用されています。

関連する問題