#!/usr/bin/perl -W use strict; use warnings; use diagnostics; use Fcntl qw(:DEFAULT :flock); use Data::Dumper; local $Data::Dumper::Sortkeys = \&dumper_sort; sub dumper_sort { my ($hash) = @_; return [(sort {lc $a cmp lc $b} keys %$hash)]; } my %test = ( 1 => 'foo', 2 => 'bar', 3 => 'foobar', 4 => 'barfoo', ); my $loesche = 2; print Dumper (\%test); if ($loesche == keys %test) { delete $test{$loesche}; } else { for ($loesche + 1..keys %test) { $test{$_ - 1} = $test{$_}; delete $test{$_}; } } print Dumper (\%test);