我有一個複雜結構的哈希,我想執行搜索和替換。第一個散列如下所示:比較和編輯哈希中的底層結構
$VAR1 = {
abc => { 123 => ["xx", "yy", "zy"], 456 => ["ab", "cd", "ef"] },
def => { 659 => ["wx", "yg", "kl"], 456 => ["as", "sd", "df"] },
mno => { 987 => ["lk", "dm", "sd"] },
}
,我要反覆搜索所有「123」 /「456」的元素,如果找到匹配,我需要做的子層,即比較的['ab','cd','ef']
和['as','sd','df']
,在這種情況下,只保留['ab','cd','ef']。所以輸出如下:
$VAR1 = {
abc => { 123 => ["xx", "yy", "zy"], 456 => ["ab", "cd", "ef"] },
def => { 659 => ["wx", "yg", "kl"] },
mno => { 987 => ["lk", "dm", "sd"] },
}
所以刪除是基於子結構,而不是索引。如何做呢?謝謝您的幫助!!假設我將聲明要保留的值,即基於預先聲明的值[「ab」,「我」將保留456 => [「ab」,「cd」,「ef」]] cd「,」ef「]並刪除任何其他地方的其他456實例。搜索必須針對每個密鑰。所以代碼將通過散列,首先取123 => [「xx」,「yy」,「zy」],並將其與整個散列的其餘部分的鍵進行比較,如果未找到匹配,則不執行任何操作。如果找到匹配,就像456 => [「ab」,「cd」,「ef」]一樣,它會比較兩者,並且正如我所說的那樣,如果匹配時使用[「 ab「,」cd「,」ef「]將被保留,它將保持456 => [」ab「,」cd「,」ef「]並丟棄散列中任何其他地方的任何其他456實例,在這種情況下刪除456 => [「as」,「sd」,「df」]。
看看[perldsc(http://perldoc.perl.org/perldsc.html)..這是所有這些東西只有.. 特別'hashes' –
的哈希值,您應該指定如何決定應該保留其中的條目。 – darch
你讓我看看這個。我只能說「什麼?」 – ikegami