我有一个复杂结构的哈希,我想执行搜索和替换。第一个哈希如下:
$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"] },
}
所以删除是基于子结构,而不是索引。怎么做到呢?谢谢您的帮助!!
假设我将声明要保留的值,即我将保留 456 => ["ab", "cd", "ef"] 基于预先声明的值 ["ab", "cd", " ef"] 并在其他任何地方删除 456 的任何其他实例。搜索必须针对每个键。因此代码将通过哈希,首先取 123 => ["xx", "yy", "zy"] 并将其与哈希其余部分的键进行比较,如果未找到匹配项,则不执行任何操作。如果找到匹配项,例如 456 => ["ab", "cd", "ef"],它将比较两者,正如我所说,在匹配的情况下,带有 [" ab", "cd", "ef"] 将保留,它将保留 456 => ["ab", "cd", "ef"