2013-07-17 25 views
2

的Perl:與交易「不能用string XX的數組引用,而‘嚴格的裁判’,」警告

my $test_case_list = [ 
    +{  
     label => &config->current->{'DBI'}[0], 
     expected => 'dbi:mysql:dbname=investometrica', 
     },  
     +{  
      label => &config->current->{'maintenance_file_path'}[0], 
      expected => '/var/tmp/', 
     },  
    ];   


    for my $test_case_item (@$test_case_list) { 
    my $label = @{ $test_case_item->{label} }; 
    my $expected = @{ $test_case_item->{expected} }; 
    is ($label, $expected, "Match");                                             
    } 

這給了我一個可怕的警告:

不能用string (「DBI:mysql的:DBNAME = investometrica」)的數組引用,而「嚴格裁判」在使用中config.t線25

我在做什麼錯?

+3

'$ test_case_item - > {預期}'是一個字符串,爲什麼你鑄造成一個列表? – perreal

+0

閱讀錯誤消息。它告訴你,你正在嘗試使用一個字符串作爲數組引用。別那樣做。 – 2013-07-17 04:24:25

+0

@perreal:「鑄造成一個列表」不是一個Perl的概念 – ysth

回答

3

@$test_case_list的項目是哈希引用,其關鍵是labelexpected。兩個鍵的值都是標量(不是數組引用)。所以你不能和/或不應該把它們當作數組引用。但是,這是如果你使用他們@{...}(如@{ $test_case_item->{label} })你做什麼。既然他們已經跟你想要的值標量,你應該去$test_case_item->{label}代替。

+0

標量可以肯定是數組引用......儘管在這種情況下,至少其中一個是隻是一個字符串。 – ysth

+0

@ysth謝謝,你說得對。根據您的意見,我稍微改變了我的答案。 –

相關問題