FWIW, there's a similar function in
Data::DRef called leaf_drefs_and_values(), although it differs in that it only returns extended-key-string/value pairs for the outermost, non-reference items of the structure, and it uses "." as the separator rather than "->".