Given a multi-level deep hash reference:

my $conf = {
    bucket => {
        list => {
            h    => 'help me',
            _sub => sub { say "something" }
        }
    },
    file => {
        upload => {
            h    => 'help me too',
            _sub => sub { say "else" }
        }
    }
};

We want to remove all of the _sub keys and put them in a separate hash reference with the same structure. This does that:

my $sub = {
    map {
        my $k = $_;
        $k => {
            map { $_ => delete $conf->{$k}->{$_}->{_sub} }
            keys %{ $conf->{$k} }
        }
    } keys %$conf
};