for my $key ( keys %hosts ) { if ( $hosts{$key} != $table_count ) { delete $hosts{$key}; } } #### while ( my ($key,$value) = each %hosts) { delete $hosts{$key} if $value != $table_count; } #### while (($key, $value) = each %hash) { print $key, "\n"; delete $hash{$key}; # This is safe }