in reply to Building dynamic nested hash references

This version is slightly more compact by using map to navigate through the tree. A wrong path will return undef. I use the grep because so you can add empty "/" at the beginning or end of the filename, at your will.
use Data::Dumper; $VAR1 = { 'misc' => {}, 'docs' => { 'howtos' => { 'email' => { 'index.html' => { 'date' => '21-1-2004', 'size' => '691' } }, 'ftp' => {}, 'ssh' => {} } } }; $fs = "/docs/howtos/email/"; $v = $VAR1; # this is the actual processing map { $v = $v->{$_} } grep { length > 0 } split m./., $fs ; print Dumper $v;
Enjoy!

Note. I have been reading Paul Graham's On Lisp lately, does it show? :)

Note: I submitted this comment before seeing's BrowserUk's, looks like we had the same idea.