sub nested { return ( shift, (@_) ? { nested(@_) } : 1 ) } my %hash = nested(qw(red green brown));