2015-04-03 97 views
0

我想刪除的數組引用哈希的關鍵:如何從Perl中數組引用哈希刪除鍵

如果「鑰匙」,我想刪除是「測試」,我試過的東西像

$Test = 'Test'; 

foreach my $k (keys %{$line}) { 
    @{$line->{$k}} = grep @{$line->{'$Test'}} != 0, @{$line->{$k}}; 
} 

但我無法將其刪除!有人可以告訴我如何刪除它嗎?

回答

1

perl delete操作執行此操作。參見perlfunc手冊:

刪除EXPR

鑑於指定的哈希元素,數組元素的散列切片,或陣列切片的表達,刪除從哈希或數組中指定的元件(一個或多個) 。在數組的情況下,如果數組元素恰好處於末尾,則數組的大小將縮小到對exists()()存在測試爲true的最高元素(如果不存在此類元素,則爲0)。

在此討論:

+0

我想:我的$ K(鍵%{$行}){如果($ k =〜m/$ Test /){delete @ {$ line - > {$ Test}};} else {next;}}但是沒有奏效。我得到的刪除參數不是HASH或ARRAY元素或切片... – EpiMan 2015-04-04 00:53:55

+0

'delete'將應用於'$ {$ line} {$ k}'之類的東西,因爲這是我理解的哈希名稱/值你正在刪除。 「@」表示一個數組變量,而「%{$ line}」是一個散列變量。 – 2015-04-04 01:12:40

+0

謝謝,刪除$ {$ line} {$ k};工作:) – EpiMan 2015-04-04 01:56:18