Data::Diver is only useful if you know the path to the node, but that's not the case here.
The latter looks interesting, but only if it can be convinced to returns what "*" matched along with the found node (and a quick scan didn't reveal any indication that it can).