selective_delete( $destinationDir , \@KEEP ); sub selective_delete { my( $thedir, $keepers ) = @_; my %keepers = map { path( $thedir , $_ ) => 1; } @$keepers; my @goners = grep { not exists $keepers{$_} } path( $thedir )->children; for my $goner ( @goners ){ path( $goner )->remove; } return; }