in reply to XPath-like method for searching/editing structures

What you're searching for seems too general to make sense. Could you maybe ask for something more concrete that you really need?

If you just want to do a regex replacement on a value, Data::Diver doesn't stop you. Just write DiveVal(...) =~ s/foo/bar/;