my $var; my @parts = grep length, split m#/#, $input; for ($var = $VAR1; @parts && $var; $var = $var->{shift @parts}) {} use Data::Dumper; print Dumper $var;