C:\test>perl -anlE"my@l=split'(?<=-)',$F[0];my%r;$r{$_}=1 for split'(?<=-)',$F[1];say $_.' '.@l.' '.keys(%r).' '.grep defined, @r{@l}" junk.dat a_12_3_5- k_3_4_6-a_12_3_5- 1 2 1 q_1_5_7_9- q_1_5_7_9- 1 1 1 a_9_4_5-c_3_4_6- c_3_4_6-r_4_5_7- 2 2 1 b_1_1_3- v_1_5_7- 1 1 0 d_12_4_5-e_4_5_6- g_5_6_7-d_6_8_6- 2 2 0 b_1_1_7-f_3_8_7_8-d_4_1_4- d_4_1_5-b_1_1_7-f_3_8_3 3 3 1 b_1_1_7-f_3_8_7_8-d_4_1_4- e_3_3_1-f_3_8_7-f_21_3_1-b_1_1_7-a_1_1_1- 3 5 1