2011-06-07 5 views
0

下の式に間違いがありますか?perl hash confusion

my $container; 
    while (my $val = $details->next()){ 
      $container->{'total_vals'} += 1; 
      my $section_name= 'some string from some db query'; 
      $container->{"$section_name"}->{'total_vals'} += 1; 
    } 
    print Dumper $section; 

上記のコードは、strictが使用されていない場合に動作します。no strict 2番目のキーには有効な値が含まれていません。厳しいサブが使用されている場合、私は以下の警告を受け取ります。私が逃しているものを私に教えてください。

Can't use string ("140360537348481") as a HASH ref while "strict refs" in use at source.pm line 61."

+3

'' $ section_name "'は '$ section 'と同じものではありません。一つの事のために "_name" '、 – mob

+0

ああ、私はそれを訂正した誤植でした。 – awake416

+0

なぜあなたは$ containerをダンプしていませんか?私はprintステートメントを除いて$ sectionの使用を見ません。それ自体が「厳密な使用」で壊れるでしょう。 – runrig

答えて

4

これはおそらくいくつかの点で$container->{"$section_name"} = "140360537348481";を設定することを意味します。あなたは$container->{"$section_name"} = {};をしたはずです。

+0

種類のyeh ...しかし、私はどのように起こることができるのか分かりません...私は私の全体のコードブロックをもう一度チェックしてみましょう... yeh完璧...あなたは正しいです...私はそこに変更を加えてみましょう – awake416

+0

が起こるので、結局、これで解決しましたか? – krico

+0

私は正しいトラックを指してくれたので、私は最後の1時間以来私の頭を傷つけていた。 ...ありがとうございました.... – awake416