Hash-BulkKeyCopy

 view release on metacpan or  search on metacpan

lib/Hash/BulkKeyCopy.xs  view on Meta::CPAN

hash_bulk_keycopy(hash_target, hash_src, hash_target_keyarr, hash_src_keyarr)
    HV* hash_target;
    HV* hash_src;
    AV* hash_target_keyarr;
    AV* hash_src_keyarr;
PREINIT:
    int ht_kl,hs_kl,i;
    char *k1, *k2;
    SV **ptr1, **ptr2, **src_value;
    STRLEN k1size,k2size;
PPCODE:
    ht_kl = av_len(hash_target_keyarr) + 1;
    hs_kl = av_len(hash_src_keyarr) + 1;
    if (hs_kl == 0 || (ht_kl > 0 && hs_kl != ht_kl)) return;
    for(i=0;i<hs_kl;i++) {
        ptr1 = av_fetch(hash_target_keyarr, i, 0);
        ptr2 = av_fetch(hash_src_keyarr, i, 0);
        k1 = ptr1 == NULL ? NULL : SvPV(*ptr1, k1size);
        k2 = SvPV(*ptr2, k2size);
        src_value = hv_fetch(hash_src, k2, k2size, 0);
        if (src_value) {



( run in 0.582 second using v1.01-cache-2.11-cpan-5511b514fd6 )