sub callback_readdir { my ($folder, $proc) = @_; if(opendir(DIR, $folder)) { while(defined(my $file = readdir(DIR))) { next if $file =~ /^\.\.?$/; next if -f "$folder/$file"; $proc->("$folder/$file"); } closedir(DIR); } } ... callback_readdir($path, \&rmtree);