2013-02-26 73 views
1

Perl的新手。我試圖從一個哈希數組的值。有人可以解釋爲什麼我會得到未初始化的值錯誤當我嘗試perl中的grep錯誤

#!/usr/bin/perl 
use strict; 
use warnings; 

my %families = (Flintstone => [ qw(Pebbles)     ], 
      Simpson => [ qw(Bart Lisa Maggie)   ], 
      Keaton  => [ qw(Alex Mallory Jennifer Andy) ]); 
my $user = 'Mary'; 
foreach my $name (keys %families) 
{ 
    print "$name has @{$families{$name}} \n"; 

    if (grep /$user/,@{families{$name}}) 
    { 
    print "User $user found \n" 
    } 
    else 
    { 
    print "User $user not found"; 
    } 
} 

更新:謝謝。我修正了$ name。但grep似乎並不適合我。即如果我將$用戶更改爲Bart,我仍然找不到用戶Bart。

+1

永遠不會在提問時縮寫或總結錯誤。始終複製並粘貼。 – TLP 2013-02-26 20:29:15

+0

感謝您修正錯誤代碼 – 2013-02-26 20:39:55

回答

2

您的意思是

@{$families{$name}} 

而不是

@{families{name}} 

也許?

+0

感謝您修復錯誤。但是邏輯似乎不起作用,尤其是grep部分..例如,如果我將$用戶更改爲Bart,仍然會找到用戶Bart未找到 – user1719051 2013-02-26 20:41:41

+0

不,如果您從@TLP實施修復程序,它將按預期工作。 – 2013-02-26 21:13:49

+0

謝謝。它現在有效。 – user1719051 2013-02-26 21:29:14

1

你會注意到第13行出現錯誤,而第11行沒有出現錯誤?缺失的$可能很重要。