Purge( '/whatever/path' ); sub Purge { my $dir = shift; open my $dh or die "$!, for $dir"; for my $file ( grep !/^\./, readdir $dh ) { my $path = "$dir/$file"; if ( -d $path ) { Purge( $path ); } else { ( -z $path ) and unlink $path; } } close $dh or die "$!, for $dir"; }