sub recursive_remove { my ($dirname) = @_; opendir my $dirhandle, $dirname or die "opening $dirname: $!"; foreach my $file (readdir $dirhandle) { ... } }