use List::Util qw( reduce ); sub array_to_nested_hash { reduce { scalar {$b,$a} } undef, reverse @_; }