Update: Reading
liz response I realized that I've done a reverse task to what was asked for.
Here is a recursive subroutine for that:
sub applypath{
my($val, $index, @path) = @_;
if(!defined($index)){
return $val;
}
return applypath($val->{$index}, @path);
}
You might add some parameter checking if you need it and
of course an iterative subroutine would be more efficient if you are into optimisation.
By the way I feel that
my @keys = qw (1,2,3) is not exactly what you wanted to write as it is equivalent to my @keys = "1,2,3". Read about the qw operator on the perlop manpage (perldoc perlop).