2013-08-22 45 views
1

我用散列來存儲成員id。我使用以下驗證避免了雙重性:如何使用perl獲得每個類別的唯一成員?

if($cases{$type} != $member_id) { 
    $cases{$type} = $member_id; 
} 

之後,我想通過每個$類型獲取成員總數。我怎樣才能做到這一點?

我嘗試以下,但不工作:

scalar(values $cases{$type}); 

非常感謝。

回答

1

您目前的方法實際上並不計算給定類型中有多少個成員;它只是跟蹤最後一個成員添加的內容。

要保持計數,請考慮使用哈希散列;使用這個爲每個$member_id你添加:

$cases{$type}{$member_id} = 1; 

散列分配的值並不重要;這只是一種使用散列鍵來保持唯一性的方法。

然後,爲了獲得成員的數量對於一個給定類型,使用

scalar keys %{$cases{$type}} 
+4

這應該是'標量鍵%{$ cases {$ type}}' –

+0

謝謝!有一個brainfart。 :-) –

0

您可以使用$member_id作爲密鑰,並用grep找到計數。 存儲$type$case{$member_id} = $type

使用以下打印計數。

print scalar grep $case{$_} == $type, keys %case; 
相關問題