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; 

выше код работает, когда строги не используется no strict. но второй ключ не содержит допустимого значения. в то время как если используется строгий под-модуль, я получаю следующее предупреждение. просто дай мне знать, чего я не хватает.

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

oh yeh, который был хорошим приложением, я исправил его. – awake416

+0

Почему вы не сбрасываете $ container? Я не вижу использования $ section, кроме инструкции print. Это само по себе сломается с «использованием строгого». – runrig

ответ

4

Это означает, что вы, вероятно, установить $container->{"$section_name"} = "140360537348481"; в какой-то момент. Когда вы должны были сделать $container->{"$section_name"} = {};.

+0

вид yeh ... но я не уверен, как это может произойти ... позвольте мне снова проверить весь блок кода ... yeh perfect .... вы правы ... позвольте мне внести изменения там и посмотреть, что бывает – awake416

+0

так, в конце концов, это решило? – krico

+0

Я царапал себе голову, так как в течение последних 1 часа спасибо за то, что указал мне на правильный трек. ... большое спасибо .... – awake416