#! /usr/bin/perl use strict; use warnings; my @keys = qw( foo bar ); my $x = {}; { my $t = $x; for my $i ( 0 .. $#keys ) { my $v = $i == $#keys ? join('',@keys) : {}; $t = $t->{ $keys[$i] } = $v; } } use Data::Dumper; print Dumper( $x );