use warnings; use strict; use Data::Dump qw(dd pp); my %hash = ( a => 11, b => 12, c => 13, d => 14, ); while (my ($key, $value) = each %hash) { print "key is $key, value is $value, hash is ", pp(\%hash), "\n"; delete $hash{$_} for qw( a b c d ); $hash{x} .= $key; } dd \%hash; #### 23:43 >perl 1148_SoPW.pl key is c, value is 13, hash is { a => 11, b => 12, c => 13, d => 14 } key is x, value is c, hash is { x => "c" } key is x, value is cx, hash is { x => "cx" } key is x, value is cxx, hash is { x => "cxx" } key is x, value is cxxx, hash is { x => "cxxx" } key is x, value is cxxxx, hash is { x => "cxxxx" } key is x, value is cxxxxx, hash is { x => "cxxxxx" } key is x, value is cxxxxxx, hash is { x => "cxxxxxx" } key is x, value is cxxxxxxx, hash is { x => "cxxxxxxx" } key is x, value is cxxxxxxxx, hash is { x => "cxxxxxxxx" } ...