my @hash_keys = qw/foo bar baz quux w x y z/; my %foo; my %bar; for my $key (@hash_keys) { $foo{$key} = 1; print "$key: ", join(':', keys %foo), "\n"; } for my $key (reverse @hash_keys) { $bar{$key} = 1; print "$key: ", join(':', keys %bar), "\n"; } #### foo: foo bar: bar:foo baz: bar:baz:foo quux: bar:baz:quux:foo w: w:bar:baz:quux:foo x: w:bar:baz:quux:x:foo y: y:w:bar:baz:quux:x:foo z: y:w:bar:baz:quux:x:foo:z z: z y: y:z x: y:x:z w: w:y:x:z quux: w:y:quux:x:z baz: w:y:baz:quux:x:z bar: w:y:bar:baz:quux:x:z foo: w:baz:x:y:bar:quux:foo:z