#!/usr/bin/perl use strict; use warnings; my %hash = (foo => {}); my $ref = \%hash; for (0..100000) { print $_, "\n"; $ref = $ref->{foo}; $ref->{foo} = {}; } #%hash = {}; # <= Speicherzugriffsfehler my $delete; $delete=sub { my $href=shift(@_); $delete->($href->{foo}) if(ref($href->{foo}) eq 'HASH'); %$href=(); }; $delete->(\%hash); print "ende\n";